hadoop集群搭建
Posted 有水先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop集群搭建相关的知识,希望对你有一定的参考价值。
环境
操作系统: debian
hadoop版本:apache 2.6.4
java版本:jdk8
ssh免密登陆
参考之前的文章: ssh免密登陆部署
修改主机名
分别在三台机器中,以root用户修改主机名为hadoop-master、hadoop-slave1、hadoop-slave2:
修改后,记得重启机器,才能生效
修改域名
在三台机器中,在/etc/hosts文件中追加如下内容:
Java安装
从:=》jdk8下载链接《=中下载jdk-8u202-linux-x64.tar.gz文件,上传到3台服务器上,解压,并配置环境变量:
使用root用户:
验证java安装:
hadoop组件规划
域名 | 组件 |
---|---|
hadoop-master | NameNode DataNode ResourceManager NodeManager SecondaryNameNode |
hadoop-slave1 | DataNode NodeManager |
hadoop-slave1 | DataNode NodeManager |
hadoop包准备
在=》 apache hadoop2.6下载链接《=中下载hadoop-2.6.4.tar.gz文件,上传到3台服务器上,解压,并配置环境变量:
配置hadoop环境
hadoop-env.sh
配置hadoop启动过程ssh通信端口和jdk位置
core-site.xml
core-site.xml用于存储hadoop全局参数,如下参数须在core-site.xml文件中定义:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master:9000</value>
<description>namenode暴露9000端口给客户端访问</description>
<description>secondary namenode存储editlog和fsimage位置</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/yuliang02/hadoop/tmp</value>
</property>
</configuration>
在core-site.xml中定义fs.defaultFS后,命令行默认就访问这个hdfs集群:
如果把fs.defaultFS放到hdfs-site.xml中,就只能指定hadoop集群访问了:
必须在core-site中定义hadoop.tmp.dir,不然运行mapreduce程序时,发生如下错误:
hdfs-site.xml
定义文件存储目录,这些文件指定的目录不需要手动创建,格式化时已经定义好了。
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/yuliang02/hadoop/name</value>
<description>namenode存储editlog和fsimage位置</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/yuliang02/hadoop/data</value>
<description>datanode存储block的位置</description>
</property>
</configuration>
slaves文件
slaves文件指定哪些机器启动datanode服务和nodemanager服务。只在集群统一启动与集群统一关闭的时候有用。
hadoop-master
hadoop-slave1
hadoop-slave2
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master</value>
<description>指定resoruce-manager主机名</description>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://hadoop-master:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/yuliang02/hadoop/tmp</value>
</property>
</configuration>
验证安装成果
默认50070端口访问hdfs UI:
默认8088端口访问yarn UI:
跑mapreduce程序:
成功:
Number of Maps = 10
Samples per Map = 10
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Wrote input for Map #4
Wrote input for Map #5
Wrote input for Map #6
Wrote input for Map #7
Wrote input for Map #8
Wrote input for Map #9
Starting Job
21/10/07 21:08:41 INFO client.RMProxy: Connecting to ResourceManager at hadoop-master/10.212.31.65:8032
21/10/07 21:08:42 INFO input.FileInputFormat: Total input paths to process : 10
21/10/07 21:08:42 INFO mapreduce.JobSubmitter: number of splits:10
21/10/07 21:08:43 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1633612082365_0001
21/10/07 21:08:43 INFO impl.YarnClientImpl: Submitted application application_1633612082365_0001
21/10/07 21:08:43 INFO mapreduce.Job: The url to track the job: http://hadoop-master:8088/proxy/application_1633612082365_0001/
21/10/07 21:08:43 INFO mapreduce.Job: Running job: job_1633612082365_0001
21/10/07 21:08:55 INFO mapreduce.Job: Job job_1633612082365_0001 running in uber mode : false
21/10/07 21:08:55 INFO mapreduce.Job: map 0% reduce 0%
21/10/07 21:09:21 INFO mapreduce.Job: map 40% reduce 0%
21/10/07 21:09:33 INFO mapreduce.Job: map 40% reduce 13%
21/10/07 21:09:36 INFO mapreduce.Job: map 100% reduce 13%
21/10/07 21:09:39 INFO mapreduce.Job: map 100% reduce 100%
21/10/07 21:09:44 INFO mapreduce.Job: Job job_1633612082365_0001 completed successfully
...
...
Job Finished in 62.845 seconds
Estimated value of Pi is 3.20000000000000000000
踩坑经历
UI显示datanode只有一个的问题
如下,live nodes显示3个:
datanodes页面只有一个:
从上面可以看到datanodes是正常运行的。
原因:/etc/hosts配置错误,在文件最前面把每个datanode域名都设置成一样的了,这样hadoop UI就只显示一个datanode。
解决办法:注释掉域名的配置。
总结和展望
- 这次搭建hadoop集群,比较大胆地进行了比较多的试验,测试不同配置对于集群的影响。
- 以后要搭建proxyserver,history server,journal node,standby namenode。
- 以后要配置kerberos。
新增配置
proxy server
在yarn的RM中,包括web-proxy工程,它可以启动一个单独的进程,对外提供web服务,从resourcemanager上点击正在执行的app,会跳转到yarn.web-proxy.address,这里展示正在执行的job信息,job执行结束后,会跳转到historyserver上;如果没有配置yarn.web-proxy.address,则这个功能会集成到RM中。
在yarn-site.xml中增加如下配置:
<property>
<name>yarn.web-proxy.address</name>
<value>hadoop-master:8090</value>
</property>
单独启动proxy server,start-all.sh并不能启动proxyserver:
如图可看到,点击8088端口的Application Master链接后,会跳转到8090端口,即proxy server服务,通过proxy server访问Application Master,而不是通过Resource Manager访问Application Master,这样即使Application Master链接有毒,中毒的只是proxy server而已,这样更好地保障了Resource Manager的安全。
history server
https://cloud.tencent.com/developer/article/1701489
https://www.cnblogs.com/lemonu/p/12956741.html
以上是关于hadoop集群搭建的主要内容,如果未能解决你的问题,请参考以下文章