准备工作:
下载CDH的hadoop安装包, 这里选择5.14.0版本
http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.14.0-src.tar.gz
CDH的hadoop的安装包下载下来后, 是没有提供带C程序访问的接口, 所以我们在使用本地库(本地库可以用来做压缩,以及支持C程序等等)的时候就会出问题, 所以我们需要下载src源码进行编译.
CDH的hadoop-2.6.0-cdh5.14.0编译博文链接: https://blog.csdn.net/weixin_42582592/article/details/83000529
上传编译后的CDH 5.14.0压缩包到第一台机器上, 并解压
查看hadoop支持的压缩方式以及本地库
bin/hadoop checknative 监测native是否可用
如果出现openssl为false,那么所有机器在线安装openssl即可,执行以下命令,虚拟机联网之后就可以在线进行安装了.
安装完成后, 再次检查native, 发现openssl已经可用.
接下来要修改6个配置文件, 我们使用nodepad++提供的Nppftp功能, 连接第一台机器, 找到这个目录
/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
分别打开以下6个配置文件:
1. 修改core-site.xml文件
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://node01:8020value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/tempDatasvalue>
property>
<property>
<name>io.file.buffer.sizename>
<value>4096value>
property>
<property>
<name>fs.trash.intervalname>
<value>10080value>
property>
configuration>
2. 修改hadoop-env.sh文件
export JAVA_HOME=/export/servers/jdk1.8.0_144
3. 修改hdfs-site.xml文件
<configuration>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>node01:50090value>
property>
<property>
<name>dfs.namenode.http-addressname>
<value>node01:50070value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatasvalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatasvalue>
property>
<property>
<name>dfs.namenode.edits.dirname>
<value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/editsvalue>
property>
<property>
<name>dfs.namenode.checkpoint.dirname>
<value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/namevalue>
property>
<property>
<name>dfs.namenode.checkpoint.edits.dirname>
<value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/editsvalue>
property>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.permissionsname>
<value>falsevalue>
property>
<property>
<name>dfs.blocksizename>
<value>134217728value>
property>
configuration>
4. 修改mapred-site.xml文件
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>mapreduce.job.ubertask.enablename>
<value>truevalue>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>node01:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>node01:19888value>
property>
configuration>
5. 修改slaves文件
node01
node02
node03
6. 修改yarn-site.xml文件
<configuration>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>node01value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>
configuration>
7. 修改mapred-env.sh文件 (可选)
export JAVA_HOME=/export/servers/jdk1.8.0_144
我们在上面的配置文件中配置了很多数据的存储位置, 比如元数据的存储位置, datanode的存储位置, edites的存储位置, hadoop的临时文件位置等多个. 那么接下来就要把这些文件夹给创建出来.
在第一台机器上创建文件夹, 这些位置我都放在了hadoopDatas文件夹下面
tempDatas 是hadoop临时文件存放位置
namenodeDatas 是namenode元数据存储位置
datanodeDatas 是datanode数据存储位置
dfs/nn/edits 是edites存储位置
dfs/snn/name 是元数据检查点的存储位置
dfs/nn/snn/edits 是edites检查点的存储位置
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/tempDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits
cd /export/servers/
scp -r hadoop-2.6.0-cdh5.14.0/ node02:$PWD
scp -r hadoop-2.6.0-cdh5.14.0/ node03:$PWD
三台机器都要进行配置hadoop的环境变量
三台机器执行以下命令
vim /etc/profile
export HADOOP_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
保存退出后, 执行 source /etc/profile
要启动 Hadoop 集群, 需要启动 HDFS 和 YARN 两个集群.
注意: 首次启动HDFS时, 必须对其进行格式化操作. 本质上是一些清理和准备工作, 因为此时的 HDFS 在物理上还是不存在的.
bin/hdfs namenode -format 或者 bin/hadoop namenode –format
单个节点逐一启动
在主节点上使用以下命令启动 HDFS NameNode:
hadoop-daemon.sh start namenode
在每个从节点上使用以下命令启动 HDFS DataNode:
hadoop-daemon.sh start datanode
在主节点上使用以下命令启动 YARN ResourceManager:
yarn-daemon.sh start resourcemanager
在每个从节点上使用以下命令启动 YARN nodemanager:
yarn-daemon.sh start nodemanager
在主节点上使用以下命令启动 jobhistory:
mr-jobhistory-daemon.sh start historyserver
以上脚本位于$HADOOP_PREFIX/sbin/目录下。如果想要停止某个节点上某个角色,只需要把命令中的start 改为stop 即可。
脚本一键启动
如果配置了 etc/hadoop/slaves 和 ssh 免密登录,则可以使用程序脚本启动所有Hadoop 两个集群的相关进程,在主节点所设定的机器上执行。
启动集群
第一台机器执行以下命令
cd /export/servers/hadoop-2.6.0-cdh5.14.0/
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver
停止集群
sbin/stop-dfs.sh
sbin/stop-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver
192.168.179.100:50070 访问hdfs集群
192.168.179.100:8088 访问yarn集群
192.168.179.100:19888 访问jobhistory
好了, CDH版本的hadoop就搭建成功了, 当然啦, hadoop生态圈中随便拉出来看看就是一大堆的框架…而且本文搭建完成的分布式并没有实现主节点的高可用, 后面有机会专门出博文介绍如何实现nameNode和resourceManager的高可用.