hadoop集群部署

1.前置条件及准备工作

  • SSH免密登录
  • JDK1.8
  • 上传tar包(hadoop-3.3.6)
  • 远程调用脚本及远程同步脚本

远程调用脚本

#!/bin/bash

p_cnt=$#
if (( p_cnt<1 )) ; then
	echo no args;
	exit ;
fi


cuser=`whoami`
for host in node1 node2 node3
do
	echo --------- $host -----------
	ssh -p 60022 $cuser@$host $@
done

远程同步脚本

#!/bin/bash

p_cnt=$#
if (( p_cnt<1 )) ; then
	echo no args;
	exit ;
fi

file=$1
fname=`basename $file`
echo fname=$fname

fdir=`cd -P $(dirname $file) ; pwd`
echo fdir=$fdir

cuser=`whoami`
for host in node1 node2 node3
do
	echo --------- host$host -----------
	rsync -av $fdir/$fname -e 'ssh -p 60022' $cuser@$host:$fdir
done

2. 集群部署

  • 解压tar包
  • 修改配置文件
  • 文件夹同步
  • 启动命令

修改配置文件hadoop-env.sh/core-site.xml/hdfs-site.xml/yarn-site.xml/mapred-site.xml

hadoop-env.sh

# (1)JDK配置
# (2)由于SSH端口改成了60022,这里需设置
export HADOOP_SSH_OPTS="-p 60022"

core-site.xml

<configuration>
   <!--指定namenode的地址-->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://node1:8020</value>
		</property>
   <!--用来指定使用hadoop时产生文件的存放目录-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/core/hadoop-3.3.6/data</value>
	</property>
   <!--配置HDFS网页登录使用的静态用户为foo-->
	<property>
		<name>hadoop.http.staticuser.user</name>
		<value>foo</value>
	</property>
</configuration>

hdfs-site.xml

<configuration>
	<!-- nn web 端访问地址-->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>node1:9870</value>
	</property>
	
	<!-- 2nn web 端访问地址-->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>node2:9868</value>
	</property>
</configuration>

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

	<!--nomenodeManager获取数据的方式是shuffle-->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
       <!--指定Yarn的老大(ResourceManager)的地址-->     
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>node3</value>
	</property> 
	
	<property>
		<name>yarn.nodemanager.env-whitelist</name>
		<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
	</property>

</configuration>

mapred-site.xml

<configuration>
	<!--告诉hadoop以后MR(Map/Reduce)运行在YARN上-->
	<property>
		  <name>mapreduce.framework.name</name>
		  <value>yarn</value>
	</property>
</configuration>

启动命令

# namenode格式化,在node1
hdfs namonode -format
# 启动hdfs,在node1
sbin/start-hdfs.sh

# 启动yarn,在node3
sbin/start-yarn.sh

3. 问题处理

启动hdfs时报错,ssh端口22禁止访问

# 修改hadoop-env.sh,设置SSH参数

启动hdfs报错,Encountered exception loading fsimage java.io.IOException: File system image contains an old layout version -60. An upgrade to version -66 is required.

# 新搭建的集群,namenode格式化后生成的VERSION文件中layout version默认是-60,所以启动时报错,将VERSION文件中的-60改为-66即可,重新启动hdfs

4. 引用

Hadoop搭建集群
Apache Hadoop
Hadoop NameNode元数据相关文件目录解析
rsync命令技巧
关于修改ssh端口号处理办法

posted @ 2024-12-25 18:14  钱塘江畔  阅读(36)  评论(0)    收藏  举报