Hadoop安装笔记.docx
- 文档编号:30320302
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:20
- 大小:23.83KB
Hadoop安装笔记.docx
《Hadoop安装笔记.docx》由会员分享,可在线阅读,更多相关《Hadoop安装笔记.docx(20页珍藏版)》请在冰豆网上搜索。
Hadoop安装笔记
最近工作需要,摸索着搭建了Hadoop2.2.0(YARN)集群,中间遇到了一些问题,在此记录,希望对需要的同学有所帮助。
本篇文章不涉及hadoop2.2的编译,编译相关的问题在另外一篇文章《hadoop2.2.0源码编译笔记》中说明,本篇文章我们假定已经获得了hadoop2.2.0的64bit发行包。
由于spark的兼容问题,我们后面使用了Hadoop2.0.5-alpha的版本(2.2.0是稳定版本),2.0.5的配置有一点细微的差别,文中有特别提示。
1.简介
【本节摘自
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。
以Hadoop分布式文件系统(HDFS,HadoopDistributedFilesystem)和MapReduce(GoogleMapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。
对于Hadoop的集群来讲,可以分成两大类角色:
Master和Salve。
一个HDFS集群是由一个NameNode和若干个DataNode组成的。
其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。
MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。
主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。
主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。
当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。
HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。
HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。
2.系统环境
系统版本
CentOS6.4 64bit
uname-a
Linux**2.6.32_1-7-0-0#1SMP***x86_64x86_64x86_64GNU/Linux
JAVA环境
安装Java1.6
将jdk解压到local目录下
添加JAVA_HOME环境变量到.bashrc文件中
exportJAVA_HOME="/home/
exportJRE_HOME="/home/
exportPATH=$JAVA_HOME/bin:
$JRE_HOME/bin:
$PATH
exportCLASSPATH=.:
$JAVA_HOME/lib:
$JRE_HOME/lib:
$CLASSPATH
HADOOP解压hadoop-2.2.0-bin_64.tar.gz(这个包是我在CentOS6.464bit的环境下编译得到的)到用户根目录
exportHADOOP_HOME=/home/
[html] viewplaincopyprint?
1.export PATH=$JAVA_HOME/bin:
$HADOOP_HOME/bin:
$PATH
测试本地模式
hadoop默认情况下配置为本地模式,所以解压后不修改任何配置,可以执行本地测试
//创建本地目录
mkdirinput
//填充数据
cpconf/*.xmlinput
//执行hadoop
bin/hadoopjarhadoop-examples-*.jargrepinputoutput'dfs[a-z.]+'
//查看结果
[html] viewplaincopyprint?
1.cat output/*
3.网络环境
由于前期只是测试环境和配置,所以简单的使用两个节点:
master机器,充当namenode&datanode
slave机器,充当datanode
设置hostname
HDFS用hostname而不是IP来相互之间进行通信,hadoop会反向解析hostname,即使是用了IP,也会使用hostname来启动TaskTracker,所以所有配置文件只能用hostname,不能用IP(满满的都是泪)。
我们给两个机器分别设置如下:
机器
IP
HOSTNAME
角色
master
192.168.216.135
master
namenode,datanode
slave
192.168.216.136
slave1
datanode
临时更改hostname的命令是(root权限)
hostname
永久更改需要修改配置文件/etc/sysconfig/network
[html] viewplaincopyprint?
1.HOSTNAME=
修改hosts文件
设置/etc/hosts文件(每台机器上都要设置),添加如下内容
[html] viewplaincopyprint?
1.192.168.216.135 master
2.192.168.216.136 slave1
namenode与datanode的/etc/hosts内容都必须是ip位址与hostname的对应,不能使用127.0.0.1代替本机的ip地址,否则hadoop使用hostname找ip时,会以"127.0.0.1"作为ip位址。
设置ssh无密码访问
master和所有的slave之间,需要实现双向ssh无密码访问(slave和slave之间可以不用实现)。
请参见《ssh无密码访问》文章,本文不再详述
防火墙设置
严格来说,应该是打开某些对应的端口。
为了简单起见,我们这里关闭selinux和iptalbes.
关闭selinux的方法
[html] viewplaincopyprint?
1.setenforce 1 设置SELinux 成为enforcing模式
2.setenforce 0 设置SELinux 成为permissive模式
如果永久关闭,编辑/etc/selinux/config
[html] viewplaincopyprint?
1.SELINUX=disabled
关闭iptables的方法
[html] viewplaincopyprint?
1.service iptables stop
2.service ip6tables stop
如果需要永久关闭(各个运行级别)
[html] viewplaincopyprint?
1.chkconfig iptables off
2.chkconfig ip6tables off
4.配置
我们只需要在master机器上配置好所有的配置文件,然后全部拷贝到各个slave机器上即可。
注意配置文件中涉及到的一些访问地址,都写成master:
port的形式。
很多文档中写为localhost或者127.0.0.1,这个是不对的,在多机器集群中,每一个机器上的这些配置,都是指向master节点的。
配置文件位于$HADOOP_HOME/etc/hadoop/目录下
建立数据目录
我们在根目录下建立$HADOOP_DATA_HOME目录(/home/
$HADOOP_DATA_HOME/dfs/name
$HADOOP_DATA_HOME/dfs/data
$HADOOP_DATA_HOME/mapred/local
$HADOOP_DATA_HOME/mapred/system
HDFS配置
配置hadoop-env.sh
将该脚本中的JAVA_HOME设置为JAVA安装的位置,该配置文件中,只有JAVA_HOME变量是必须配置的,其它变量都是可选配置的。
由于我们在.bashrc中添加了JAVA_HOME环境变量,这一步可以省略。
配置core-site.xml
[html] viewplaincopyprint?
1.
2.
3.
4.
5.
6.
7.
8.
9.
//master:
54310
10.
11.
12.
13.
hdfs-site.xml
[html] viewplaincopyprint?
1.
2.
3.
4.
/home/
5.
6.
7.
8.
9.
10.
11.
/home/
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
50070
31.
32.
33.
34.
35.
dfs.datanode.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。
当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
dfs.datanode.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。
当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
map-reduce配置
mapred-env.sh
类似hadoop-env.sh,配置JAVA_HOME即可
mapred-site.xml
[html] viewplaincopyprint?
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
//master:
9001
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
/home/hadoop/mapred/system
52.
53.
54.
55.
56.
57.
/home/hadoop/mapred/local
58.
59.
60.
Yarn配置
yarn-site.xml
[html] viewplaincopyprint?
1.
2.
3.
4.
5.
8080
6.
7.
8.
9.
10.
8081
11.
12.
13.
14.
15.
8082
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
注意这里的配置文件里面,有两处mapreduce_shuffle(原本配置是mapreduce.shuffle,启动时会报错,原因是**命名不能包含.字符)。
2.0.5.alpha版本中,这里需要配置成mapreduce.shuffle,否则会报错【java.lang.IllegalStateException:
Invalidshuffleportnumber-1returned】
yarn中shuffle部分被独立成一个service,需要在nodemanager启动的时候作为auxiliaryservice一起启动,这样可以自定义第三方的shuffleprovider,和ShuffleConsumer,比如可以替换现阶段的HTTPShuffle为RDMAShuffle,对于中间结果merge可以采用更合适的策略来得到更好的性能提升。
masters&slaves文件
masters文件,告诉系统那个节点是master,填写的是master节点的hostname(由于我们配置了其就叫master,所以内容填master,注意这里必须是hostname,如果填IP,会出错)
[html] viewplaincopyprint?
1.master
slaves文件,告诉系统哪些节点是slave,填写的是所有slave节点的hostname,每行一个。
注意事项同master。
[html] viewplaincopyprint?
1.slave1
默认的环境里面可能没有masters和slaves文件,自己建立即可。
5.启动集群
格式化HDFS:
$HADOOP_HOME/bin/hdfsnamenode-format
注意,如果不是第一次格式化,那么需要先清理tmp目录中的数据(默认的tmp目录在/tmp/hadoop-
启动集群
$HADOOP_HOME/sbin/start-all.sh
该命令会依次启动hdfs和yarn,分别调用start-hdfs.sh和start-yarn.sh;
start-hdfs.sh依次启动namenode、secondarynamenode、datanode,也可以单独启动,对应的命令为
[html] viewplaincopyprint?
1.hdfs namenode
2.hdfs secondarynamenode
3.hdfs datanode
6.测试
JPS测试
在master上执行jps,输出:
[html] viewplaincopyprint?
1.3716 ResourceManager
2.3456 DataNode
3.4193 Jps
4.3350 NameNode
5.3587 SecondaryNameNode
6.3807 NodeManager
在slaver上执行jps,输出:
[html] viewplaincopyprint?
1.2032 DataNode
2.2118 NodeManager
3.2274 Jps
WebUI访问
查看端口打开状态
[html] viewplaincopyprint?
1.netstat -nap | grep 54310
访问http:
//
8088
NameNode:
http:
//
50070
JobTracker:
http:
//
50030
HDFS访问
在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop 安装 笔记