Hadoop集群部署

 

 

原理

 

一、Hadoop技术原理

Hdfs主要模块:NameNode、DataNode

Yarn主要模块:ResourceManager、NodeManager

常用命令:

1)用hadoop fs 操作hdfs网盘,使用Uri的格式访问(URI格式:secheme://authority/path ,默认是hdfs://namenode:namenode port /parent path / child  , 简写为/parent path / child)

2)使用start-dfs.sh启动hdfs

1  MR执行流程:

1)客户端提交Mr 的jar包程序给JobClient

2)JobClient通过RPC和JobTracker 进行通信返回新的JOB ID 和路径

3)Client将jar包写入到HDFS当中(提交10份)

4)开始提交任务(任务的描述信息,不是Jar),有任务的详细信息

5)JobTracker进行初始化任务,把任务放到调度器中,在一台机器上

6)读取HDFS上的要处理的文件,开始计算输入分片

7)TaskTracker通过心跳机制领取任务

8)下载所需要的jar,配置文件等

9)TaskTracker启动一个Java child子进程

10)将结果写入HDFS 当中

 

 

部署情况

 


部署IP

需要软件

部署位置

主节点

从节点

192.168.174.178

Jdk1.7、hadoop2.7

/home/wxl

Namenode

Datanode

192.168.174.179

Jdk1.7、hadoop2.7

/home/wxl

 

Datanode

192.168.174.180

Jdk1.7、hadoop2.7

/home/wxl

 

Datanode


SecondaryNameNode 节点恢复节点

前提:Ssh免密码登录、防火墙已关、selinux已关

 

 

1、jdk1.7部署

 

vim /etc/profile
export JAVA_HOME=/home/wxl/jdk1.7.0_55
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
 
#scp 分发到多个work节点上
scp -r /home/wxl/jdk1.7.0_55 root@192.168.174.179: /home/wxl/jdk1.7.0_55
scp -r /home/wxl/jdk1.7.0_55 root@192.168.174.180: /home/wxl/jdk1.7.0_55
 
#分别登录work节点执行
source /etc/profile

 

 

2、hadoop安装

 

 

2.1、解压hadoop包

 

tar -zxvf hadoop-2.7.2.tar.gz

cd /home/wxl/hadoop-2.7.2/etc/hadoop

 

 

2.2、修改配置hadoop-env.sh文件

 

vim hadoop-env.sh

export JAVA_HOME=/home/wxl/jdk1.7.0_55

 

2.3、修改配置core-site.xml文件

 

vim core-site.xml

 

<property>
<!--NameNode的URI。格式:【hdfs://主机名/】-->
<name>fs.defaultFS</name>
<value>hdfs://192.168.174.178:9000</value>
</property>
<property>
<!--hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置> >,默认就放在这个路径中-->
<name>hadoop.tmp.dir</name>
<value>/home/wxl/hadoop-2.7.2/tmp</value>
</property>
<property>

<!--hadoop访问文件的IO操作都需要通过代码库。因此,在很多情况下,io.file.buffer.size都被用来设置SequenceFile中用到的读/写缓> 存大小。不论是对硬盘或者是网络操作来讲,较大的缓存都可以提供更高的数据传输,但这也就意味着更大的内存消耗和延迟。这个参数要设置> 为系统页面大小的倍数,以byte为单位,默认值是4KB>,一般情况下,可以设置为64KB(65536byte),这里设置128K-->

<name>io.file.buffer.size</name>
<value>131072</value>
</property>

 

2.4、修改配置hdfs-site.xml文件

 

vim hdfs-site.xml
 
<property>
<name>dfs.checksum.type</name>
<value>CRC32</value>
</property>
 
<property>
<!-- 指定SecondaryNamenode所在地址。本例设为和NN在同一个主机 -->
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.174.178:9001</value>
</property>
 
<property>
<!-- 指定NameNode的fsimage和edits元数据文件目录,须预先存在于NameNode节点上 -->
<name>dfs.namenode.name.dir</name>
<!-- 可以指定多个,用逗号隔开 -->
<value>/home/wxl/hadoop-2.7.2/tmp/name</value>
</property>
 
<property>
<!-- 指定DataNode节点中hdfs系统工作目录 --> <name>dfs.datanode.data.dir</name>
<value>/home/wxl/hadoop-2.7.2/tmp//data</value>
</property>
 
<property>
<!-- 文件块(副本)的备份数量 -->
<name>dfs.replication</name>
<!-- 要小于或等于附属机数量。默认3。本例只有2个slave节点 -->
<value>1</value>
</property>
 
<property>
<!-- 可以从网页端监控hdfs -->
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

 

2.5、修改配置yarn-site.xml文件

 

vim yarn-site.xml
 
<property>
<!-- 指定RM所在的主机名 -->
<name>yarn.resourcemanager.hostname</name>
<value>192.168.174.178</value>
</property>
<property>
<!-- 自定义一个yarn服务 -->
<name>Yarn.nodemanager.aux-services</name>
<!-- 启动Map-Reduce的shuffle功能。有地方说是 mapreduce_shuffle ,本例未验证 -->
<value>mapreduce.shuffle</value>
</property>

 

2.6、slave添加

 

vi slavas
192.168.174.179
192.168.174.180

 

 

2.7、格式化namenode

 

cd /home/wxl/hadoop-2.5.2/bin
./hadoop namenode -format
 
#分别传送到各个work节点
scp -r /home/wxl/hadoop-2.7.2 root@192.168.174.179:/home/wxl/
scp -r /home/wxl/hadoop-2.7.2  root@192.168.174.180:/home/wxl/

 

 

2.8、启动hdfs节点

 

/home/wxl/hadoop-2.5.2/sbin/start-dfs.sh
/home/wxl/hadoop-2.5.2/sbin/start-yarn.sh
 
hdfs url:http://192.168.174.178:50070
yarn url:http://192.168.174.178:8088