史上最详细的Hadoop环境搭建(四)

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

第八步、完全布式环境部署Hadoop

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

二十五、环境准备

1、 克隆虚拟机

  • Vmware左侧选中要克隆的机器,这里对原有的BigData01机器进行克隆,虚拟机菜单中,选中管理菜单下的克隆命令。

  • 选择“创建完整克隆”,虚拟机名称为BigData02,选择虚拟机文件保存路径,进行克隆。

  • 再次克隆一个名为BigData03的虚拟机。

2、 配置网络

修改网卡名称:

在BigData02和BigData03机器上编辑网卡信息。执行sudo vim /etc/udev/rules.d/70-persistent-net.rules命令。因为是从BigData01机器克隆来的,所以会保留BigData01的网卡eth0,并且再添加一个网卡eth1。并且eth0的Mac地址和BigData01的地址是一样的,Mac地址不允许相同,所以要删除eth0,只保留eth1网卡,并且要将eth1改名为eth0。将修改后的eth0的mac地址复制下来,修改network-scripts文件中的HWADDR属性。

sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
  
  
  • 1

enter image description here

修改网络参数:

BigData02机器IP改为192.168.100.12

BigData03机器IP改为192.168.100.13

3、 配置Hostname

BigData02配置hostname为 bigdata-senior02.chybinmy.com

BigData03配置hostname为 bigdata-senior03.chybinmy.com

4、 配置hosts

BigData01、BigData02、BigData03三台机器hosts都配置为:


  
  
  1. [hadoop@bigdata-senior01 hadoop-2.5.0]$ sudo vim /etc/hosts
  2. 192.168.100.10 bigdata-senior01.chybinmy.com
  3. 192.168.100.12 bigdata-senior02.chybinmy.com
  4. 192.168.100.13 bigdata-senior03.chybinmy.com
  • 1
  • 2
  • 3
  • 4

5、 配置Windows上的SSH客户端

在本地Windows中的SSH客户端上添加对BigData02、BigData03机器的SSH链接。

二十六、服务器功能规划

bigdata-senior01.chybinmy.com bigdata-senior02.chybinmy.com bigdata-senior03.chybinmy.com
NameNode ResourceManage  
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
HistoryServer   SecondaryNameNode

二十七、在第一台机器上安装新的Hadoop

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

6、 解压Hadoop目录:

[hadoop@bigdata-senior01 modules]$ tar -zxf /opt/sofeware/hadoop-2.5.0.tar.gz -C /opt/modules/app/
  
  
  • 1

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

export JAVA_HOME="/opt/modules/jdk1.7.0_67"
  
  
  • 1

8、 配置core-site.xml

[hadoop@bigdata-senior01 hadoop-2.5.0]$ vim etc/hadoop/core-site.xml
  
  
  • 1

  
  
  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS </name>
  4. <value>hdfs://bigdata-senior01.chybinmy.com:8020 </value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir </name>
  8. <value>/opt/modules/app/hadoop-2.5.0/data/tmp </value>
  9. </property>
  10. </configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

fs.defaultFS为NameNode的地址。

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

9、 配置hdfs-site.xml

[hadoop@bigdata-senior01 hadoop-2.5.0]$ vim etc/hadoop/hdfs-site.xml
  
  
  • 1

  
  
  1. <configuration>
  2. <property>
  3. <name>dfs.namenode.secondary.http-address </name>
  4. <value>bigdata-senior03.chybinmy.com:50090 </value>
  5. </property>
  6. </configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

dfs.namenode.secondary.http-address是指定secondaryNameNode的http访问地址和端口号,因为在规划中,我们将BigData03规划为SecondaryNameNode服务器。

所以这里设置为:bigdata-senior03.chybinmy.com:50090

10、 配置slaves


  
  
  1. [hadoop@bigdata-senior01 hadoop-2.5.0]$ vim etc/hadoop/slaves
  2. bigdata-senior01.chybinmy.com
  3. bigdata-senior02.chybinmy.com
  4. bigdata-senior03.chybinmy.com
  • 1
  • 2
  • 3
  • 4

slaves文件是指定HDFS上有哪些DataNode节点。

11、 配置yarn-site.xml

[hadoop@bigdata-senior01 hadoop-2.5.0]$ vim etc/hadoop/yarn-site.xml
  
  
  • 1

  
  
  1. <property>
  2. <name>yarn.nodemanager.aux-services </name>
  3. <value>mapreduce_shuffle </value>
  4. </property>
  5. <property>
  6. <name>yarn.resourcemanager.hostname </name>
  7. <value>bigdata-senior02.chybinmy.com </value>
  8. </property>
  9. <property>
  10. <name>yarn.log-aggregation-enable </name>
  11. <value>true </value>
  12. </property>
  13. <property>
  14. <name>yarn.log-aggregation.retain-seconds </name>
  15. <value>106800 </value>
  16. </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

根据规划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@bigdata-senior01 hadoop-2.5.0]$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
  
  
  • 1

  
  
  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name </name>
  4. <value>yarn </value>
  5. </property>
  6. <property>
  7. <name>mapreduce.jobhistory.address </name>
  8. <value>bigdata-senior01.chybinmy.com:10020 </value>
  9. </property>
  10. <property>
  11. <name>mapreduce.jobhistory.webapp.address </name>
  12. <value>bigdata-senior01.chybinmy.com:19888 </value>
  13. </property>
  14. </configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

mapreduce.framework.name设置mapreduce任务运行在yarn上。

mapreduce.jobhistory.address是设置mapreduce的历史服务器安装在BigData01机器上。

mapreduce.jobhistory.webapp.address是设置历史服务器的web页面地址和端口号。

二十八、设置SSH无密码登录

Hadoop集群中的各个机器间会相互地通过SSH访问,每次访问都输入密码是不现实的,所以要配置各个机器间的

SSH是无密码登录的。

1、 在BigData01上生成公钥

[hadoop@bigdata-senior01 hadoop-2.5.0]$ ssh-keygen -t rsa
  
  
  • 1

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

2、 分发公钥


  
  
  1. [hadoop@bigdata-senior01 hadoop-2.5.0]$ ssh-copy-id bigdata-senior01.chybinmy.com
  2. [hadoop@bigdata-senior01 hadoop-2.5.0]$ ssh-copy-id bigdata-senior02.chybinmy.com
  3. [hadoop@bigdata-senior01 hadoop-2.5.0]$ ssh-copy-id bigdata-senior03.chybinmy.com
  • 1
  • 2
  • 3

3、 设置BigData02、BigData03到其他机器的无密钥登录

同样的在BigData02、BigData03上生成公钥和私钥后,将公钥分发到三台机器上。

二十九、分发Hadoop文件

1、 首先在其他两台机器上创建存放Hadoop的目录


  
  
  1. [hadoop@bigdata-senior02 ~]$ mkdir /opt/modules/app
  2. [hadoop@bigdata-senior03 ~]$ mkdir /opt/modules/app
  • 1
  • 2

2、 通过Scp分发

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

doc目录大小有1.6G。


  
  
  1. [hadoop@bigdata-senior01 hadoop-2.5.0]$ du -sh /opt/modules/app/hadoop-2.5.0/share/doc
  2. 1.6G /opt/modules/app/hadoop-2.5.0/share/doc
  3. [hadoop@bigdata-senior01 hadoop-2.5.0]$ scp -r /opt/modules/app/hadoop-2.5.0/ bigdata-senior02.chybinmy.com:/opt/modules/app
  4. [hadoop@bigdata-senior01 hadoop-2.5.0]$ scp -r /opt/modules/app/hadoop-2.5.0/ bigdata-senior03.chybinmy.com:/opt/modules/app
  • 1
  • 2
  • 3
  • 4

三十、格式NameNode

在NameNode机器上执行格式化:

[hadoop@bigdata-senior01 hadoop-2.5.0]$ /opt/modules/app/hadoop-2.5.0/bin/hdfs namenode –format
  
  
  • 1

注意:

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


  
  
  1. <property>
  2. <name>hadoop.tmp.dir </name>
  3. <value>/opt/data/tmp </value>
  4. </property>
  5. <property>
  6. <name>dfs.namenode.name.dir </name>
  7. <value>file://${hadoop.tmp.dir}/dfs/name </value>
  8. </property>
  9. <property>
  10. <name>dfs.datanode.data.dir </name>
  11. <value>file://${hadoop.tmp.dir}/dfs/data </value>
  12. </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

另一种方法是格式化时指定集群ID参数,指定为旧的集群ID。

三十一、启动集群

1、 启动HDFS

[hadoop@bigdata-senior01 hadoop-2.5.0]$ /opt/modules/app/hadoop-2.5.0/sbin/start-dfs.sh
  
  
  • 1

enter image description here

2、 启动YARN

[hadoop@bigdata-senior01 hadoop-2.5.0]$ /opt/modules/app/hadoop-2.5.0/sbin/start-yarn.sh
  
  
  • 1

在BigData02上启动ResourceManager:

[hadoop@bigdata-senior02 hadoop-2.5.0]$ sbin/yarn-daemon.sh start resourcemanager
  
  
  • 1

enter image description here

3、 启动日志服务器

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


  
  
  1. [hadoop @bigdata-senior03 ~]$ /opt/modules/app/hadoop- 2.5 .0/sbin/mr-jobhistory-daemon.sh start historyserver
  2. starting historyserver, logging to /opt/modules/app/hadoop- 2.5 .0/logs/mapred-hadoop-historyserver-bigda ta-senior03.chybinmy.com.out
  • 1
  • 2

  
  
  1. [hadoop @bigdata-senior03 ~]$ jps
  2. 3570 Jps
  3. 3537 JobHistoryServer
  4. 3310 SecondaryNameNode
  5. 3213 DataNode
  6. 3392 NodeManager
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4、 查看HDFS Web页面

http://bigdata-senior01.chybinmy.com:50070/

5、 查看YARN Web 页面

http://bigdata-senior02.chybinmy.com:8088/cluster

三十二、测试Job

我们这里用hadoop自带的wordcount例子来在本地模式下测试跑mapreduce。

1、 准备mapreduce输入文件wc.input


  
  
  1. [hadoop @bigdata-senior01 modules]$ cat /opt/data/wc.input
  2. hadoop mapreduce hive
  3. hbase spark storm
  4. sqoop hadoop hive
  5. spark hadoop
  • 1
  • 2
  • 3
  • 4
  • 5

2、 在HDFS创建输入目录input

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -mkdir /input
  
  
  • 1

3、 将wc.input上传到HDFS

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -put /opt/data/wc.input /input/wc.input
  
  
  • 1

4、 运行hadoop自带的mapreduce Demo

[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /input/wc.input /output
  
  
  • 1

enter image description here

5、 查看输出文件


  
  
  1. [hadoop @bigdata-senior01 hadoop- 2.5 .0]$ bin/hdfs dfs -ls /output
  2. Found 2 items
  3. -rw-r--r-- 3 hadoop supergroup 0 2016- 07- 14 16: 36 /output/_SUCCESS
  4. -rw-r--r-- 3 hadoop supergroup 60 2016- 07- 14 16: 36 /output/part-r- 00000
  • 1
  • 2
  • 3
  • 4

猜你喜欢

转载自blog.csdn.net/yimenglin/article/details/90208438