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