前提:Hadoop集群搭建方案,这里要搭建HDFS和Yarn集群
HDFS:
NameNode:node1
SecondaryNameNode:node2
DataNode:node1、node2、node3
Yarn:
ResourceManager:node1
NodeManager:node1、node2、node3
一、Hadoop的搭建
1、安装
下载好Hadoop的.tar.gz的安装包后,解压到软件的目录下/export/server
cd /export/software
tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz -C /export/server
在node1上进入Hadoop的配置文件目录
cd /export/server/hadoop-3.3.0/etc/hadoop
2、在node1上对Hadoop的相关文件进行配置
(1)hadoop-env.sh
export JAVA_HOME=/export/server/jdk1.8.0_241
#文件最后添加
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
说明:添加jdk的路径,并对各个角色赋予root权限
(2) core-site.xml
<!-- 指定HDFS的主节点NameNode在ndoe1上 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<!-- 指定HDFS数据的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.0</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
说明:设置好HDFS的主节点在哪台机器,HDFS数据的存放目录等,设置node1
(3)hdfs-site.xml
<!-- 指定secondarynamenode运行位置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
<property>
??????? <name>dfs.hosts.exclude</name>
??????? <value>/export/server/hadoop-3.3.0/etc/hadoop/excludes</value>
</property>
说明:设置node2
(4)mapred-site.xml
<!--MapReduce执行时由Yarn来进行资源调度-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--给MapReduce指定Hadoop的安装位置-->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
(5)yarn-site.xml
<!-- 指定YARN的主角色(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node1:19888/jobhistory/logs</value>
</property>
<!-- 保存的时间7天,单位是秒 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
3、设置workers
vim /export/server/hadoop-3.3.0/etc/hadoop/workers
#写入一下内容
node1
node2
node3
说明:将三台主机添加到Hadoop集群中去(这样子写的前提是配置好了域名映射)
4、在主节点node1上,将配置好的Hadoop安装包分发给其他主机,node2和node3
cd /export/server
scp -r hadoop-3.3.0/ node2:$PWD
scp -r hadoop-3.3.0/ node3:$PWD
5、在三台主机上添加Hadoop的环境变量
vim /etc/profile #添加以下内容
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#配置完之后记得source一下
source /etc/profile
到这里,我们的Hadoop集群就搭建以及配置好了
二、Hadoop集群的启动
注意,第一次启动Hadoop之前,必须要对HDFS进行格式化,而且只能操作一次,切记
#创建数据存放目录(!!!!!!!三台都要创建!!!!!!!!!!)
mkdir -p /export/data/
#切记一定要在node1格式化,该操作只能执行一次,如果多次操作会失败
hadoop namenode -format
#如果你多次操作格式化,则需要删除三台机器的/export/data/hadoop-3.3.0目录,然后在node1重新格式化
启动方式1:对集群中的每个角色单独进行启停操作
#HDFS
#在node1上使用以下命令启动HDFS NameNode:
hdfs --daemon start namenode
#在三台机器上使用以下命令启动HDFS DataNode:
hdfs --daemon start datanode
#在node2上使用以下命令启动HDFS SecondaryNameNode:
hdfs --daemon start secondarynamenode
#Yarn
#在node1上使用以下命令启动YARN ResourceManager:
yarn --daemon start resourcemanager
#在三台机器上使用以下命令启动YARN nodemanager:
yarn --daemon start nodemanager
启动方式2:一键启停集群类型
#一键启动和停止HDFS
start-dfs.sh #开启HDFS
stop-dfs.sh #停止HDFS
#一键启动和停止Yarn
start-yarn.sh #开启Yarn
stop-yarn.sh #停止Yarn
启动方式3:一键启停HDFS和Yarn
start-all.sh #开启
stop-all.sh #停止
如何排查启动失败的错误
#1、如果使用jps命令,发现某一台主机的某个进程没有启动,则需要进入这台的主机的logs目录进行日志查看
cd /export/server/hadoop-3.3.0/logs
#2、比如node1主机的datanode没有启动,则打开以下文件,并进入文件的末尾来查看错误原因
vim hadoop-root-datanode-node1.log
三、Hadoop集群的验证
1、使用jps命令验证三台主机,查看对应角色的进程是否都已启动
2、访问页面(HDFS端口:9870,Yarn端口:8088)
http://192.168.88.161:9870/ #访问HDFS页面
http://node1:9870/ #访问HDFS页面
http://192.168.88.161:8088/ #访问yarn页面
http://node1:8088/ #访问yarn页面
3、验证Yarn能否工作,执行一个MapReduce任务(计算PI值)
hadoop jar /export/server/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar pi 2 1000
4、验证历史任务
#在node1开启历史任务
mapred --daemon start historyserver
#访问历史任务页面
http://192.168.88.161:19888/
http://node1:19888/
#这个历史任务页面的作用
以后当我们的MapReduce运行出现了错误,则可以通过查看日志来排查错误
说明:开启之后,就能通过网页客户端来查看日志
四、Hadoop的回收站
1、配置回收站,在node1,修改core-site.xml文件,添加以下内容
cd /export/server/hadoop-3.3.0/etc/hadoop #配置文件的路径
vim core-site.xml #添加以下内容
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
2、将该配置文件用scp命令分发给其他主机
cd /export/server/hadoop-3.3.0/etc/hadoop
scp core-site.xml node2:$PWD
scp core-site.xml node3:$PWD
3、通过一键启停Hadoop重启
stop-all.sh #停止
start-all.sh #开启
4、验证回收站
1、将一个Linux文件上传到HDFS的根目录下
hadoop fs -put 文件名 /
2、删除刚才上传的根目录下的文件
hadoop fs -rm /文件名
3、去HDFS页面,查看回收站被删除的文件,该命令是网页客户端的回收站路径
/user/root/.Trash/Current
|