CentOS7安装Hadoop集群
写在前面
- hadoop集群需要配置主机互信,配置方法见
- hadoop不应该以root用户运行,会报错,但是有解决方案,应该指定一个非root账户来运行,在core-site.xml中体现
软件下载
这里附上hadoop-3.1.3.tar.gz百度云下载地址,其它版本自行下载
解压缩
tar xzvf hadoop-3.1.3.tar.gz -C /opt/module
软件安装在哪里凭个人喜好
配置Hadoop环境变量
vim /etc/profile.d/my_env.sh
增加配置
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PAHT=$PATH:$HADOOP_HOME/sbin
刷新环境变量
source /etc/profile
验证
hadoop会出来一堆命令,则安装成功
修改Hadoop配置
配置项均在
/opt/module/hadoop-3.1.3/etc/hadoop下,均在下列文件中的configuration节点中
- 修改core-site.xml
fs.defaultFS
hdfs://hadoop102:8020
hadoop.tmp.dir
/opt/module/hadoop-3.1.3/data
hadoop.http.staticuser.user
hadoop
hadoop.proxyuser.hadoop.hosts
*
hadoop.proxyuser.hadoop.groups
*
hadoop.proxyuser.hadoop.users
*
- 修改hdfs-site.xml
dfs.namenode.http-address
hadoop102:9870
dfs.namenode.secondary.http-address
hadoop104:9868
- 修改yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop103
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
yarn.scheduler.minimum-allocation-mb
512
yarn.scheduler.maximum-allocation-mb
4096
yarn.nodemanager.resource.memory-mb
4096
yarn.nodemanager.pmem-check-enabled
false
yarn.nodemanager.vmem-check-enabled
false
yarn.log-aggregation-enable
true
yarn.log.server.url
http://hadoop102:19888/jobhistory/logs
yarn.log-aggregation.retain-seconds
604800
- 修改mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
hadoop102:10020
mapreduce.jobhistory.webapp.address
hadoop102:19888
- 配置workers文件
hadoop102
hadoop103
hadoop104
分发到集群的其它节点
xsync hadoop-3.1.3
xsync /etc/profile.d/my_env.sh
source /etc/profile
分发脚本见
hadoop群起脚本
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input.."
exit ;
fi
case $1 in
"start")
echo "=========启动hadoop集群==========="
echo "---------启动hdfs----------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo "----------启动yarn----------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo "----------启动historyserver----------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo "=========关闭hadoop集群==========="
echo "----------关闭historyserver----------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo "----------关闭yarn------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo "-----------关闭hdfs------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
启动集群
- 如果是第一次启动,需要先格式化NameNode(在hadoop102节点)
注意:格式化NameNode,会产生新的集群ID,导致NameNode和DataNode的集群ID不一致,集群找不到以往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化
格式化命令:hdfs namenode -format
- 启动hadoop集群
myhadoop.sh start
查看运行状态
jpsall
脚本见
结果正常如下,为433的架构
相关页面
hdfs页面:http://hadoop102:9870
yarn页面:http://hadoop103:8088
历史服务器:http://hadoop102:19888