Hadoop完全分布式搭建
目录
- Hadoop完全分布式搭建
- 环境准备
- 集群规划
- 开始配置集群
- 配置hadoop-env.sh
- 配置workers
- 配置core-site.xml
- 配置hdfs-site.xml
- 配置mapred-site.xml
- 配置yarn-site.xml
- 初始化namenode
- 启动hadoop
- 测试启动
- 脚本编写
Hadoop完全分布式搭建
环境准备
- 准备3台机器
- 配置网络
- 修改主机名
- 配置主机hosts映射
- 关闭防火墙
- 创建用户并使用户具有root权限
- 安装jdk并配置环境变量
- 安装hadoop并配置环境变量
- ssh免密配置
集群规划
| hadoop1 | hadoop2 | hadoop3 | |
|---|---|---|---|
| HDFS | namenode datanode |
datanode | secondarynamenode datanode |
| YARN | nodemanager | nodemangaer resourcemanger |
nodemanager |
开始配置集群
配置hadoop-env.sh
# 添加java的路径
JAVA_HOME=/opt/module/jdk1.8.0_181
配置workers
为了后面能够群起集群
hadoop1
hadoop2
hadoop3
配置core-site.xml
ds.defaultFS
hdfs://hadoop1:8020
hadoop.data.dir
/opt/module/hadoop-3.1.3/data
配置hdfs-site.xml
dfs.replication
3
dfs.namenode.name.dir
file://${hadoop.data.dir}/name
dfs.datanode.data.dir
file://${hadoop.data.dir}/data
dfs.namenode.checkpoint.dir
file://${hadoop.data.dir}/secondarynamenode
dfs.namenode.http-address
hadoop1:9870
dfs.namenode.secondary.http-address
hadoop3:9868
配置mapred-site.xml
mapreduce.framework.name
yarn
配置yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop2
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ
yarn.nodemanager.vmem-check-enabled
false
初始化namenode
hadoop1
hdfs namenode -format
启动hadoop
hadoop1
hdfs --daemon start namenode
hdfs --daemon start datanode
yarn --daemon start nodemanager
hadoop2
hadfs --daemon start datanode
yarn --daemon start resourcemanager
yarn --daemon start nodemanager
hadoop3
hdfs --daemon start secondarynamenode
hdfs --daemon start datanode
yarn --daemon start nodemanager
测试启动
- jps
- web测试
脚本编写
群发:rsync,差异性复制
#!/bin/sh
# 判断参数
if [ $# -lt 1 ]
then
echo "input arguments errors!"
exit
fi
# 遍历集群
for hadoop in hadoop1 hadoop2 hadoop3
do
# 遍历文件
for file in $*
do
# 判断文件是否存在
if [ -e $file ]
then
# 获取文件的父目录
pdir=$(cd -P $(dirname $file);pwd)
# 获取文件名字
filename=$(basename $file)
# 差异性复制
rsync -av $pdir/$filename $hadoop:$pdir
else
echo "$file is not exist!"
fi
done
done
hadoop集群,群起脚本
#!/bin/sh
if [ $# -lt 1 ]
then
echo "input arguments error"
exit
fi
# 启动或关闭集群
case $1 in
start)
echo "======HDFS START======"
ssh hadoop1 start-dfs.sh
echo "======YARN START======"
ssh hadoop2 start-yarn.sh
;;
stop)
echo "======HDFS STOP======"
ssh hadoop1 stop-dfs.sh
echo "======YARN STOP======"
ssh hadoop2 stop-yarn.sh
;;
*)
echo "input arguments error"
;;
esac