Hadoop集群环境搭建(七)之完全分布式搭建

第四部分:完全分布式安装

完全布式环境部署Hadoop
完全分部式是真正利用多台Linux主机来进行部署Hadoop,对Linux机器集群进行规划,使得Hadoop各个模块分别部署在不同的多台机器上。

一、环境准备

1、 克隆虚拟机

Vmware左侧选中要克隆的机器,这里对原有的hadoop01机器进行克隆,虚拟机菜单中,选中管理菜单下的克隆命令。
选择“创建完整克隆”,虚拟机名称为hadoop03,选择虚拟机文件保存路径,进行克隆。
再次克隆一个名为hadoop04的虚拟机。
2、 配置Hostname
BigData02配置hostname为 hadoop03
BigData03配置hostname为 hadoop03
3、 配置hosts
BigData01、BigData02、BigData03三台机器hosts都配置为:

[hadoop@hadoop01 hadoop]# vim /etc/hosts
192.168.100.10 hadoop01
192.168.100.12 hadoop03
192.168.100.13 hadoop04

4、 配置Windows上的SSH客户端
在本地Windows中的SSH客户端上添加对hadoop03、hadoop04机器的SSH链接。

二、服务器功能规划

hadoop01 hadoop03 hadoop04

在这里插入图片描述

三、在第一台机器上安装新的Hadoop

为了和之前hadoop01机器上安装伪分布式Hadoop区分开来,我们将hadoop01上的Hadoop服务都停止掉,然后在一个新的目录/opt/modules/app下安装另外一个Hadoop。
我们采用先在第一台机器上解压、配置Hadoop,然后再分发到其他两台机器上的方式来安装集群。
6、 解压Hadoop目录:

[hadoop@hadoop01 modules]# tar -zvxf /opt/modules/hadoop-2.5.0.tar.gz   

7、 配置Hadoop JDK路径修改hadoop-env.shmapred-env.sh、yarn-env.sh文件中的JDK路径:

export JAVA_HOME="/opt/modules/app/jdk1.8"

8、 配置core-site.xml

[hadoop@hadoop01 hadoop]# vim etc/hadoop/core-site.xml

<configuration>
 <property>
   <name>fs.defaultFS</name>
   <value>hdfs://bigdata-senior01.chybinmy.com:8020</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/modules/app/hadoop-2.5.0/data/tmp</value>
 </property>
</configuration>

fs.defaultFS为NameNode的地址。
hadoop.tmp.dir为hadoop临时目录的地址,默认情况下,NameNode和DataNode的数据文件都会存在这个目录下的对应子目录下。应该保证此目录是存在的,如果不存在,先创建。

9、 配置hdfs-site.xml

[hadoop@hadoop01 hadoop]# vim etc/hadoop/hdfs-site.xml

<configuration>
 <property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>hadoop03:50090</value>
 </property>
</configuration>

dfs.namenode.secondary.http-address是指定secondaryNameNode的http访问地址和端口号,因为在规划中,我们将BigData03规划为SecondaryNameNode服务器。
所以这里设置为:bigdata-senior03.chybinmy.com:50090

10、 配置slaves

[hadoop@hadoop01 hadoop]# vim etc/hadoop/slaves
hadoop01
hadoop03
hadoop04

slaves文件是指定HDFS上有哪些DataNode节点。
11、 配置yarn-site.xml

[hadoop@ hadoop01 hadoop]# vim etc/hadoop/yarn-site.xml

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>bigdata-senior02.chybinmy.com</value>
</property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>106800</value>
</property>

根据规划yarn.resourcemanager.hostname这个指定resourcemanager服务器指向bigdata-senior02.chybinmy.com
yarn.log-aggregation-enable是配置是否启用日志聚集功能。
yarn.log-aggregation.retain-seconds是配置聚集的日志在HDFS上最多保存多长时间。

12、 配置mapred-site.xml
从mapred-site.xml.template复制一个mapred-site.xml文件。

[hadoop@hadoop01 hadoop]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>bigdata-senior01.chybinmy.com:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>bigdata-senior01.chybinmy.com:19888</value>
    </property>
</configuration>

mapreduce.framework.name设置mapreduce任务运行在yarn上。
mapreduce.jobhistory.address是设置mapreduce的历史服务器安装在BigData01机器上。
mapreduce.jobhistory.webapp.address是设置历史服务器的web页面地址和端口号。

四、设置SSH无密码登录
Hadoop集群中的各个机器间会相互地通过SSH访问,每次访问都输入密码是不现实的,所以要配置各个机器间的
SSH是无密码登录的。
1、 在 hadoop01上生成公钥

[hadoop@ hadoop01 hadoop]# ssh-keygen -t rsa

一路回车,都设置为默认值,然后再当前用户的Home目录下的.ssh目录中会生成公钥文件(id_rsa.pub)和私钥文件(id_rsa)。

2、 分发公钥

yum -y install openssh-server openssh-clients

[hadoop@ hadoop01 hadoop]# ssh-copy-id  hadoop01
[hadoop@ hadoop01 hadoop]# ssh-copy-id  hadoop03
[hadoop@ hadoop01 hadoop]# ssh-copy-id  hadoop04

3、 设置hadoop03、hadoop04到其他机器的无密钥登录
同样的在hadoop03、hadoop04上生成公钥和私钥后,将公钥分发到三台机器上。
二十九、分发Hadoop文件
1、 首先在其他两台机器上创建存放Hadoop的目录

[hadoop@hadoop03 ~]# mkdir /opt/modules/app
[hadoop@hadoop04 ~]# mkdir /opt/modules/app

2、 通过Scp分发
Hadoop根目录下的share/doc目录是存放的hadoop的文档,文件相当大,建议在分发之前将这个目录删除掉,可以节省硬盘空间并能提高分发的速度。
doc目录大小有1.6G。

[hadoop@hadoop01 hadoop]# scp -r /opt/modules/app/hadoop/ hadoop03:/opt/modules/app

 [hadoop@hadoop01 hadoop]# scp -r /opt/modules/app/hadoop/ hadoop04:/opt/modules/app

五、格式NameNode
在NameNode机器上执行格式化:

[hadoop@hadoop01 hadoop]# /opt/modules/app/hadoop/bin/hdfs namenode –format

注意:
如果需要重新格式化NameNode,需要先将原来NameNode和DataNode下的文件全部删除,不然会报错,NameNode和DataNode所在目录是在core-site.xml中hadoop.tmp.dir、dfs.namenode.name.dir、dfs.datanode.data.dir属性配置的。

<property>
     <name>hadoop.tmp.dir</name>
     <value>/opt/data/tmp</value>
  </property>
<property>
     <name>dfs.namenode.name.dir</name>
     <value>file://${hadoop.tmp.dir}/dfs/name</value>
  </property>
<property>
     <name>dfs.datanode.data.dir</name>
     <value>file://${hadoop.tmp.dir}/dfs/data</value>
  </property>

因为每次格式化,默认是创建一个集群ID,并写入NameNode和DataNode的VERSION文件中(VERSION文件所在目录为dfs/name/current 和 dfs/data/current),重新格式化时,默认会生成一个新的集群ID,如果不删除原来的目录,会导致namenode中的VERSION文件中是新的集群ID,而DataNode中是旧的集群ID,不一致时会报错。
另一种方法是格式化时指定集群ID参数,指定为旧的集群ID。
六、启动集群
1、 启动HDFS

[hadoop@hadoop hadoop]# /opt/modules/app/hadoop/sbin/start-dfs.sh

enter image description here

2、 启动YARN

   [hadoop@hadoop hadoop]# /opt/modules/app/hadoop/sbin/start-yarn.sh

在hadoop04上启动ResourceManager:

[hadoop@hadoop04 hadoop]# sbin/yarn-daemon.sh start resourcemanager

enter image description here

3、 启动日志服务器
因为我们规划的是在hadoop04服务器上运行MapReduce日志服务,所以要在hadoop04上启动。

[hadoop@hadoop04  ~]# /opt/modules/app/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver

[hadoop@hadoop04 ~]# jps
3570 Jps
3537 JobHistoryServer
3310 SecondaryNameNode
3213 DataNode
3392 NodeManager

4、 查看HDFS Web页面

http://hadoop01.chybinmy.com:50070/

5、 查看YARN Web 页面

http://hadoop03:8088/cluster

七、测试Job
我们这里用hadoop自带的wordcount例子来在本地模式下测试跑mapreduce。
1、 准备mapreduce输入文件wc.input

[hadoop@hadoop01 modules]# cat /opt/data/wc.input
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop

2、 在HDFS创建输入目录input

[hadoop@hadoop01 hadoop]# bin/hdfs dfs -mkdir /input

3、 将wc.input上传到HDFS

[hadoop@hadoop01 hadoop]# bin/hdfs dfs -put /opt/data/wc.input /input/wc.input

4、 运行hadoop自带的mapreduce Demo

[hadoop@hadoop01 hadoop]# bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /input/wc.input /output

5、 查看输出文件

[hadoop@hadoop01 hadoop]# bin/hdfs dfs -ls /output
Found 2 items
-rw-r--r--   3 hadoop supergroup          0 2016-07-14 16:36 /output/_SUCCESS
-rw-r--r--   3 hadoop supergroup         60 2016-07-14 16:36 /output/part-r-00000

猜你喜欢

转载自blog.csdn.net/wth_97/article/details/86503861