资源规划
组件 | LTSR003 | LTSR005 | LTSR006 | LTSR007 | LTSR008 |
---|---|---|---|---|---|
OS | centos7.6 | centos7.6 | centos7.6 | centos7.6 | centos7.6 |
JDK | jvm | jvm | jvm | jvm | jvm |
HDFS | DataNode/HTTPFS | DataNode/HTTPFS | DataNode/HTTPFS | DataNode/HTTPFS | NameNode/DataNode/HTTPFS |
YARN | NodeManager | NodeManager | NodeManager | NodeManager | ResourceManager/NodeManager/mr-jobhistory |
安装介质
版本:hadoop-2.7.2.tar.gz
下载:http://archive.apache.org/dist/hadoop/core
环境准备
安装JDK
SSH免密
参考:《CentOS7.6-SSH免密-bigdata》
参考:《CentOS7.6-SSH免密-root》
安装Hadoop
先在节点LTSR008上安装,之后分发到LTSR003、LTSR005、LTSR006、LTSR007。
cd ~/software/
wget http://archive.apache.org/dist/hadoop/core/hadoop-2.7.2/hadoop-2.7.2.tar.gz
tar -zxvf hadoop-2.7.2.tar.gz -C ~/modules/
rm -rf hadoop-2.7.2.tar.gz
# 清理安装介质
rm -rf ~/modules/hadoop-2.7.2/share/doc
rm -rf ~/modules/hadoop-2.7.2/*/*.cmd
rm -rf ~/modules/hadoop-2.7.2/*/*/*.cmd
(1).HDFS单机部署
创建相关目录
# hadoop临时目录,core-site.xml的hadoop.tmp.dir属性相关(所有节点执行) sudo mkdir -p /data/hdfs/tmp sudo chmod -R a+w /data/hdfs/tmp sudo chown -R bigdata:bigdata /data/hdfs/tmp
hdfs配置
1.配置hadoop-env.sh。
export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2
vi ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
配置如下:
export JAVA_HOME=/home/bigdata/modules/jdk1.8.0_221
2.配置core-site.xml。
export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2
vi ${HADOOP_HOME}/etc/hadoop/core-site.xml
配置如下:
<!--默认文件系统的名称(uri's的authority部分用来指定host, port等。默认是本地文件系统。)-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://LTSR008:9000</value>
</property>
<!--WEB UI访问数据使用的用户名 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>bigdata</value>
</property>
<!-- Hadoop的临时目录,服务端参数,修改需重启。NameNode的Image/Edit目录依赖此配置 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hdfs/tmp</value>
</property>
3.配置hdfs-site.xml。
export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2
vi ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
配置如下:
<!--解决内部网络和外部网络访问的问题 -->
<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>LTSR008:50090</value>
</property>
<!-- HDFS数据副本数,默认3副本:本节点+同机架节点+其他机架节点,一般不大于datanode的节点数,建议默认3副本-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- HDFS中启用权限检查配置-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
格式化**NameNode**
格式化HDFS用于初始化NameNode管理的镜像和操作日志文件。
# 清理logs和tmp rm -rf ~/modules/hadoop-2.7.2/logs/* rm -rf /data/hdfs/tmp/* cd ~/modules/hadoop-2.7.2/ bin/hdfs namenode -format
出现下列提示表示格式化成功。
INFO common.Storage: Storage directory /*/*/tmp/dfs/name has been successfully formatted.
单机启动**hdfs**
core-site.xml,这里配哪一台(LTSR008),哪一台启动namenode。
cd ~/modules/hadoop-2.7.2/ # 启动NameNode sbin/hadoop-daemon.sh start namenode # 启动DataNode sbin/hadoop-daemon.sh start datanode
启动完成后,输入jps查看进程,如果看到以下进程,表示NameNode节点基本ok了。
jps **** DataNode **** NameNode
Web UI验证:http://LTSR008:50070
单机停止**hdfs**
cd ~/modules/hadoop-2.7.2/ # 停止NameNode sbin/hadoop-daemon.sh stop namenode # 停止DataNode sbin/hadoop-daemon.sh stop datanode
(2).YARN单机部署
yarn__配置
1.配置mapred-env.sh。
export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2
vi ${HADOOP_HOME}/etc/hadoop/mapred-env.sh
配置如下:
export JAVA_HOME=/home/bigdata/modules/jdk1.8.0_221
2.配置mapred-site.xml。
export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2
cp ${HADOOP_HOME}/etc/hadoop/mapred-site.xml.template ${HADOOP_HOME}/etc/hadoop/mapred-site.xml
vi ${HADOOP_HOME}/etc/hadoop/mapred-site.xml
配置如下:
<!-- 配置MapReduce运行环境 ,yarn/yarn-tez -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 日志查看IPC及WEB UI配置-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>LTSR008:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>LTSR008:19888</value>
</property>
3.配置yarn-env.sh。
export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2
vi ${HADOOP_HOME}/etc/hadoop/yarn-env.sh
配置如下:
export JAVA_HOME=/home/bigdata/modules/jdk1.8.0_221
4.配置yarn-site.xml。
export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2
vi ${HADOOP_HOME}/etc/hadoop/yarn-site.xml
配置如下:
<!-- ResourceManager节点 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>LTSR008</value>
</property>
<!--解决内部网络和外部网络访问的问题 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:8088</value>
</property>
<!--日志聚合到HDFS提供给WEB UI查看 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>10000</value>
</property>
<!-- NodeManager上运行的附属服务,用于提升Shuffle计算性能。mapreduce_shuffle/spark_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 如果没配置ApplicationMaster入口无法使用 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>10.8.0.113:8088</value>
</property>
单机启动YARN
yarn-site.xml,这里配哪一台(LTSR008),哪一台启动ResourceManager。
cd ~/modules/hadoop-2.7.2/ ## 启动resourcemanager sbin/yarn-daemon.sh start resourcemanager ## 启动nodemanager sbin/yarn-daemon.sh start nodemanager ## 启动log服务,默认日志路径:/tmp/hadoop-yarn/staging/history sbin/mr-jobhistory-daemon.sh start historyserver
输入jps查看进程,如果看到以下进程,表示ResourceManager节点基本ok了。
jps **** ResourceManager **** NodeManager **** JobHistoryServer
Web UI验证:http://LTSR008:8088
单机停止YARN
cd ~/modules/hadoop-2.7.2/ sbin/yarn-daemon.sh stop resourcemanager sbin/yarn-daemon.sh stop nodemanager sbin/mr-jobhistory-daemon.sh stop historyserver
(3).HDFS集群部署
配置slaves
export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2 vi ${HADOOP_HOME}/etc/hadoop/slaves
配置如下:
LTSR003 LTSR005 LTSR006 LTSR007 LTSR008
第一次启动前,清除各节点tmp目录,并重新格式化NameNode。
## 清理logs和tmp rm -rf ~/modules/hadoop-2.7.2/logs/* rm -rf /data/hdfs/tmp/* cd ~/modules/hadoop-2.7.2/ bin/hdfs namenode -format
环境变量设置
vi ~/.bashrc # :$到达行尾添加
配置如下:
export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2 export PATH=$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
分发Hadoop
scp -r ~/modules/hadoop-2.7.2 bigdata@LTSR003:~/modules/ scp -r ~/modules/hadoop-2.7.2 bigdata@LTSR005:~/modules/ scp -r ~/modules/hadoop-2.7.2 bigdata@LTSR006:~/modules/ scp -r ~/modules/hadoop-2.7.2 bigdata@LTSR007:~/modules/ scp ~/.bashrc bigdata@LTSR003:~/.bashrc scp ~/.bashrc bigdata@LTSR005:~/.bashrc scp ~/.bashrc bigdata@LTSR006:~/.bashrc scp ~/.bashrc bigdata@LTSR007:~/.bashrc
注:如果Hadoop临时目录(tmp)不在Hadoop包中,slaves上仍然要先手动创建并赋权。
环境变量生效:source ~/.bashrc
集群启动hdfs
core-site.xml,这里配哪一台(LTSR008),哪一台启动namenode。
cd ~/modules/hadoop-2.7.2/ sbin/start-dfs.sh
启动完成后,输入jps查看进程,如果看到以下进程,表示NameNode节点基本ok了。
jps **** DataNode **** NameNode **** SecondaryNameNode
Web UI验证:http://LTSR008:50070
集群停止hdfs
cd ~/modules/hadoop-2.7.2/ sbin/stop-dfs.sh
(4).YARN集群部署
集群启动YARN
配哪一台(LTSR008),哪一台启动ResourceManager。
cd ~/modules/hadoop-2.7.2/ sbin/start-yarn.sh ## 启动log服务,默认日志路径:/tmp/hadoop-yarn/staging/history sbin/mr-jobhistory-daemon.sh start historyserver
输入jps查看进程,如果看到以下进程,表示ResourceManager节点基本ok了。
jps **** ResourceManager **** NodeManager **** JobHistoryServer
Web UI验证:http://LTSR008:8088
集群停止YARN
cd ~/modules/hadoop-2.7.2 ## 停止log服务 sbin/mr-jobhistory-daemon.sh stop historyserver sbin/stop-yarn.sh
MR作业验证
cd ~/modules/hadoop-2.7.2 ## 创建MR输入目录 bin/hdfs dfs -mkdir -p /tmp/input ## bin/hdfs dfs -rm -r /tmp/output # 删除MR输出目录 ## 上传文件到input目录 bin/hdfs dfs -put ~/modules/hadoop-2.7.2/etc/hadoop/core-site.xml /tmp/input bin/hdfs dfs -ls /tmp/input bin/hdfs dfs -text /tmp/input/core-site.xml ## hadoop jar按mr1或mr2(yarn)运行job,决定是否配置yarn;yarn jar按yarn方式运行job。 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /tmp/input /tmp/output bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /tmp/input /tmp/output ## 查看job结果 bin/hdfs dfs -cat /tmp/output/part*
注意:MR输出目录不要提前建立,如果存在则删除或者修改为别的输出路径。
常见问题
(1).Hadoop关闭不掉
描述:当Hadoop开启一段时间(或其它情况),有时会出现无法关闭的情况:
[bigdata@ltsr008 hadoop-2.7.2]$ sbin/stop-dfs.sh Stopping namenodes on [LTSR008] LTSR008: no namenode to stop LTSR003: no datanode to stop LTSR008: no datanode to stop LTSR006: no datanode to stop LTSR007: no datanode to stop LTSR005: no datanode to stop Stopping secondary namenodes [0.0.0.0] 0.0.0.0: no secondarynamenode to stop [bigdata@ltsr008 hadoop-2.7.2]$ jps 16552 Jps 18873 NodeManager 18074 NameNode 18461 SecondaryNameNode 18238 DataNode 18735 ResourceManager [bigdata@ltsr008 hadoop-2.7.2]$