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