hadoop集群环境搭建之伪分布式集群环境搭建(一)

hadoop集群环境搭建之伪分布式集群环境搭建(一)

1、Linux基本环境配置

1.1 虚拟机网络模式选择NAT

一般虚拟机默认是NAT模式

1.2 修改主机名

vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=zhang    # 主机名

1.3 修改IP

切换root的用户,修改/etc/sysconfig/network-scripts/ifcfg-eth0文件

有的是/etc/sysconfig/network-scripts/ifcfg-eno16777736文件

vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=2ce59a48-ae92-483b-a73c-7844147b6ba0
HWADDR=00:0C:29:21:8D:08
PREFIX0=24  
DEFROUTE=no
BOOTPROTO=none  # 设置none
ONBOOT=yes  # 开始机自动网络
IPADDR=192.168.108.99   # 设置IP
NETMASK=255.255.255.0   #  子网掩码
GATEWAY0=192.168.108.2 # 设置网关

1.4 修改主机名和IP的映射关系

以root用户,打开/etc/hosts文件

vim /etc/hosts

192.168.108.99 zhang

修改/etc/hostname中文件

vim /etc/hostname

zhang

1.5 关闭防火墙

#查看防火墙状态
service iptables status
#关闭防火墙
service iptables stop
#查看防火墙开机启动状态
chkconfig iptables --list
#关闭防火墙开机启动
chkconfig iptables off

1.6 修改sudo

切换到root用户下

su root

修改/etc/sudoers文件权限,不然修改不了该文件

chmod u+w /etc/sudoers

打开/etc/sudoers文件

vim /etc/sudoers

给用户添加执行的权限

# hadoop 用户名
hadoop ALL=(root) NOPASSWD:ALL

1.7 关闭linux图形化界面

centos 7以下版本:

vim /etc/inittab

id:5:initdefault:

改为

id:3:initdefault:

centos 7.x版本:

  • 删除已经存在的符号链接
rm /etc/systemd/system/default.target
  • 默认级别转换为3
# 默认级别转换为3(文本模式)
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

# 默认级别转换为5(图形模式)
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
  • 重启
reboot

如果需要切换图形界面执行命令:startx


2、Linux之java环境安装

在CentOS 7.x的Linux操作系统下,会自带openjdk的环境,如果我们想自己安装jdk环境,需要卸载自带的openjdk环境。

步骤如下:

2.1 查看java环境

java -version

2.2 查询jdk

# 查看linux的jdk
rpm -qa | grep jdk

2.3 删除jdk

# 移除openjdk
yum -y remove java-openjdk-xxxxx

java-openjdk-xxxxx :是需要删除的openjdk

删除自带的openjdk环境后,我们就开始安装我们的jdk。

2.4 从Windows或其他机器获取tar包

# 将文件传出Linux中的用户目录
scp D:/dsoftmanager/jdk-8u151-linux-x64.tar.gz root@192.168.108.99:/home/hadoop

D:/dsoftmanager/jdk-8u151-linux-x64.tar.gz:A机器的tar包目录位置

root@192.168.108.99:/home/hadoop:linux机器存储tar的目录位置

2.5 解压tar包到指定的目录

# 创建java目录
mkdir /java

# 将文件复制到java目录
cp /home/hadoop/jdk-8u151-linux-x64.tar.gz  /java

# 进入/java
cd /java

# 解压缩
tar -zxvf jdk-8u151-linux-x64.tar.gz 

2.6 配置环境变量

# 打开配置文件
vim /etc/profile

打开/etc/profile文件,在文件的末尾,放入下面的配置信息:

# 配置java环境

JAVA_HOME=/java/jdk1.8.0_151
PATH=$PATH:$JAVA_HOME/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export  JAVA_HOME  PATH  CLASSPATH

2.7 重启机器

# 立即重启机器
shutdown -r now

或者

reboot

如果不重启,配置不会生效。

2.8 java环境测试

# 测试java环境是否安装成功
java -version
javac -version

出现如下信息,表示安装成功。

[hadoop@localhost Desktop]$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

[hadoop@localhost Desktop]$ javac -version
javac 1.8.0_151

3、hadoop伪分布式集群环境搭建

关于Linux机器环境和java环境配置,参考我的上一篇文章:hadoop集群环境搭建之Linux基本环境和java环境配置(一),在Linux环境和java环境配置好之后,我们开始搭建hadoop的伪分布式集群(伪分布式集群:在一台机器上跑hadoop需要的服务)吧。

3.1 上传hadoop安装包

scp d:/dsoftmanager/hadoop-2.7.5.tar.gz root@192.168.108.99:/home/hadoop

3.2 解压安装包

# 创建一个hadoop的目录
mkdir /hadoop

# 将/home/hadoop目录下的hadoop-2.7.5.tar.gz文件复制到/hadoop目录下
cp /home/hadoop/hadoop-2.7.5.tar.gz /hadoop

# 进入/hadoop目录
cd /hadoop

# 解压
tar -zxvf hadoop-2.7.5.tar.gz

3.3 配置hadoop环境变量

# 打开配置文件
vim /etc/profile

# 在配置文件中末尾输入
export HADOOP_HOME=/hadoop/hadoop-2.7.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

重启Linux,测试hadoop配置是否生效

# 重启
reboot

# 测试hadoop环境配置是否生效
echo ${HADOOP_HOME}

输出:/hadoop/hadoop-2.7.5

3.4 修改hadoop配置

  • 3.4.1 将${HADOOP_HOME}设置权限许可

    sudo chown -R hadoop:hadoop ${HADOOP_HOME}
    
  • 3.4.2 配置hadoop-env.shJAVA_HOME参数

    # 使用sudo命令,打开hadoop-env.sh文件
    sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
    
    # 修改JAVA_HOME的环境配置为如下所示:
    export JAVA_HOME=/java/jdk1.8.0_151
    
  • 3.4.3 配置core-site.xml文件

    # 创建一个tmp目录
    mkdir ${HADOOP_HOME}/tmp
    
    # 设置权限
    sudo chown hadoop:hadoop ${HADOOP_HOME}/tmp
    
    # 打开core-site.xml文件
    sudo vim ${HADOOP_HOME}/etc/hadoop/core-site.xml
    
    # 在<configuration>中添加配置
    <configuration>
        <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://zhang:9000</value>
        </property>
        <!-- 指定hadoop运行时产生临时文件的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/hadoop/hadoop-2.7.5/tmp</value>
        </property>
    </configuration>
    
  • 3.4.4 配置hdfs-site.xml文件

    <configuration>
        <!-- 指定HDFS副本的数量 -->
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        
        <property>
            <name>dfs.secondary.http.address</name>
            <value>192.168.108.99:50090</value>
        </property>
    </configuration>
    
  • 3.4.5 配置mapred-site.xml文件

    # 将mapred-site.xml.template改为mapred-site.xml
    sudo mv mapred-site.xml.template mapred-site.xml
    
    # 配置mapred-site.xml
    <configuration>
        <!-- 指定mr运行在yarn上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  • 3.4.6 配置yarn-site.xml文件

    <configuration>
        <!-- 指定YARN的老大(ResourceManager)的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>zhang</value>
        </property>
        <!-- reducer获取数据的方式 -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>
    

3.5 格式化namenode

hdfs namenode -format

格式化成功会在${HADOOP_HOME}/tmp/dfs/name/current/目录生成几个文件,表示成功,如下:

image

3.6 启动各个服务

进入${HADOOP_HOME}目录

  • 3.6.1 启动namenode

    # 启动namenode
    sbin/hadoop-daemon.sh start namenode
    

    出现如下结果,表示启动成功

    image
  • 3.6.2 启动datanode

    # 启动datanode
    sbin/hadoop-daemon.sh start datanode
    

    出现如下结果,表示启动成功

    image
  • 3.6.3 启动SecondaryNameNode

    # 启动secondarynamenode
    sbin/hadoop-daemon.sh start secondarynamenode
    

    出现如下结果,表示启动成功

    image
  • 3.6.4 启动Resourcemanager

    # 启动resourcemanager
    sbin/yarn-daemon.sh start resourcemanager
    

    出现如下结果,表示启动成功

    image
  • 3.6.5 启动nodemanager

    # 启动nodemanager
    sbin/yarn-daemon.sh start nodemanager
    

    出现如下结果,表示启动成功

    image
  • 3.6.6 使用jsp命令查看是否启动成功

    image
  • 3.6.7 启动dfs服务和yarn服务的另外方式

    # 开启dfs,包括namenode,datanode,secondarynamenode服务
    sbin/start-dfs.sh 
    
    # 开启yarn,包括resourcemanager,nodemanager
    sbin/start-yarn.sh
    
    # 开启所有的服务(过时)
    sbin/start-all.sh
    

    在执行启动时,需要输入用户密码

    image
  • 3.6.8 打开yarn的web页面

    YARN的Web客户端端口号是8088,通过http://192.168.108.99:8088/可以查看。

    image

3.7 运行MapReduce Job

在Hadoop的share目录中,自带jar包,里面有一些MapReduce的例子,位置在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar。我们可以使用这些例子体验搭建好的Hadoop平台。我们以wordCount为例。

  • 3.7.1 创建输入目录

    # 进入${HADOOP_HOME}目录
    cd ${HADOOP_HOME}
    
    # 创建输入目录
    bin/hdfs dfs -mkdir -p /wordcounttest/input
    
  • 3.7.2 创建测试文件wc.input,内容如下:

    ${HADOOP_HOME}目录下,创建一个data目录。在data目录下创建一个wc.input文件,文件内容:

    # 创建data目录
    mkdir data
    
    # 进入data目录
    cd data
    
    # 创建wc.input
    vim wc.input
    
    # 在文件中输入,如下内容
    
    hadoop mapreduce hive
    hbase spark storm
    sqoop hadoop hive
    spark hadoop
    
  • 3.7.3 将wc.input文件上传到HDFS的/wordcounttest/input目录下:

    bin/hdfs dfs -put data/wc.input /wordcounttest/input
    
  • 3.7.4 查看/wordcounttest/input目录

    bin/hdfs dfs -ls /wordcounttest/input
    
    image
  • 3.7.5 运行WordCount MapReduce Job

    bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount  /wordcounttest/input /wordcounttest/output
    
    image
  • 3.7.6 查看输出结果目录

    bin/hdfs dfs -ls /wordcounttest/output
    
    image
    • output目录中有两个文件,_SUCCESS文件是空文件,有这个文件说明Job执行成功。

    • part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果。

  • 3.7.7 查看输出文件结果

    bin/hdfs dfs -cat /wordcounttest/output/part-r-00000
    
    image

3.8 停止Hadoop服务

# 停止namenode
sbin/hadoop-daemon.sh stop namenode

# 停止datanode
sbin/hadoop-daemon.sh stop datanode

# 停止resourcemanager
sbin/yarn-daemon.sh stop resourcemanager
 停止nodemanager
sbin/yarn-daemon.sh stop nodemanager

停止Hadoop服务的其他方式

# 停止dfs服务
sbin/stop-dfs.sh

# 停止yarn服务
sbin/stop-yarn.sh


# 停止所有服务
sbin/stop-all.sh
image

注1:开启历史服务

sbin/mr-jobhistory-daemon.sh start historyserver

可以通过http://192.168.108.99:19888打开,可看到JobHistory页面

image

点击进去,可看见Job的详情页面。

image

注2:开启日志

hadoop默认不启动日志,我们可以在yarn-site.xml文件中配置启用日志。

  • 1.log环境配置
<property>
    <!--是否启用日志-->
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <!--设置日志保存时间,单位秒-->
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>106800</value>
</property>
  • 2.重启Yarn进程
# 停止yarn服务
sbin/stop-yarn.sh

# 启动yarn服务
sbin/start-yarn.sh
  • 3.重启HistoryServer进程
# 停止HistoryServer服务
sbin/mr-jobhistory-daemon.sh stop historyserver

# 开启HistoryServer服务
sbin/mr-jobhistory-daemon.sh start historyserver
  • 4.测试日志,运行一个MapReduce的demo,产生日志
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /wordcounttest/input /wordcounttest/output2
  • 5.查看日志:

进入MapReduce的Job页面

image

点击进入log页面,如下

image

如果没有配置yarn-site.xml中的log配置,不会出现log,而是一串提示文字。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,547评论 4 374
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,787评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,175评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,752评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,169评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,056评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,195评论 2 321
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,980评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,724评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,872评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,344评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,667评论 3 264
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,379评论 3 245
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,202评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,992评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,189评论 2 286
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,987评论 2 279

推荐阅读更多精彩内容