前提:本集群中所用软件皆为Apache版本。

jdk版本:jdk-8u111-linux-x64.tar.gz,scala版本:scala-2.11.12.tgz

hadoop版本:hadoop-3.1.3.tar.gz,zookeeper版本:apache-zookeeper-3.5.7-bin.tar.gz,kafka版本:kafka_2.11-2.4.1.tgz,flume版本:apache-flume-1.9.0-bin.tar.gz

我们这个集群由四台机子构成,分别是master01,master02,slave01,slave02。

首先,先创建一些文件夹,便于分类。

在master01上的opt下新建两个文件夹,分别是download和software。download下放的是压缩包,software下放的是压缩后的软件。分别在这两个文件夹下再创建三个文件夹,分别是base,hadoop,spark。base下主要放环境,比如jdk,scala。hadoop下主要放hadoop体系里的,比如hadoop,hive等。spark主要放其体系下的,比如flume,kafka等。

建好了如图所示。

pi超级节点 use docker compose v2 pi超级节点配置_jdk1.8

pi超级节点 use docker compose v2 pi超级节点配置_数据仓库_02

配置jdk及scala

1.将jdk和scala压缩包放到路径/opt/download/base

2.解压到路径/opt/software/base。当前路径为/opt/download/base

//解压jdk
tar -zxf jdk-8u111-linux-x64.tar.gz -C /opt/software/base/
//解压scala
tar -zxf scala-2.11.12.tgz -C /opt/software/base/

3.切换路径到/opt/software/base

将解压过后的jdk1.8.0_111命名为jdk180,解压过后的scala-2.11.12命名为scala21112

//重命名jdk
mv jdk1.8.0_111 jdk180
//重命名scala
mv scala-2.11.12 scala21112

4.进入路径/etc/profile.d,创建一个bash文件名为my.sh,并编辑此文件。

cd /etc/profile.d
touch my.sh
vi my.sh
//文件中写以下内容
#BASE_HOME
export JAVA_HOME=/opt/software/base/java180
export SCALA_HOME=/opt/software/base/scala21112
export PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

5.激活环境变量。

source /etc/profile

验证一下jdk和scala是否配置成功:

//验证jdk
java -version
//验证scala
scala -version

pi超级节点 use docker compose v2 pi超级节点配置_jdk1.8_03

pi超级节点 use docker compose v2 pi超级节点配置_jdk1.8_04

6.使用一个bash文件将master01上的/opt/software/base /etc/profile.d/my.sh拷贝给剩下的节点。

切换路径至该bash文件目录下,

allsend.sh文件内容如下:(将此bash文件添加个执行权限,命令:chmod u+x allsend.sh)

//allsend.sh
#!/bin/bash
if [ $# -lt 2 ];then
	echo "please input 2 args : source and dest path"
	exit 0
fi
SERS="master01 master02 slave01 slave02"
echo "start to scp distribute : $1..."
for i in $SERS ;do
	if [ $i != $HOSTNAME ];then
		echo -n "----$i----"
		if [ -f $1 ];then
					CMD=`scp $1 root@$i:$2`
		elif [ -d $1 ];then
					CMD=`scp -r $1 root@$i:/$2`
		fi
		echo ok
	fi
done
//先拷贝jdk及scala
./allsend.sh /opt/software/ /opt/
//再拷贝环境变量
./allsend.sh /etc/profile.d/my.sh /etc/profile.d/

7.拷贝完成后,进入剩下的节点会话中,激活一下环境变量。详见第5步骤。

配置hadoop

1.将hadoop压缩包放到路径/opt/download/hadoop

2.解压到路径/opt/software/hadoop。当前路径为/opt/download/hadoop

//解压hadoop
tar -zxf hadoop-3.1.3.tar.gz -C /opt/software/hadoop/

3.切换路径到/opt/software/hadoop

将解压过后的hadoop-3.1.3命名为hadoop313。

//重命名hadoop
mv hadoop-3.1.3 hadoop313

4.进入路径/etc/profile.d,创建一个bash文件名为my.sh,并编辑此文件。

#HADOOP_HOME
export HADOOP_HOME=/opt/software/hadoop/hadoop313
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
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

5.在hadoop313的根目录下,新建一个文件夹data。在data目录下新建dfs文件夹,再在dfs文件夹下新建data和name文件夹。

pi超级节点 use docker compose v2 pi超级节点配置_hadoop_05

pi超级节点 use docker compose v2 pi超级节点配置_jdk1.8_06

pi超级节点 use docker compose v2 pi超级节点配置_hadoop_07

6.进入路径到/opt/software/hadoop/hadoop313/etc/hadoop下,配置四个文件。分别是:hdfs-site.xml,core-site.xml,yarn-site.xml,mapred-site.xml

<configuration></configuration>中添加一些内容。

core-site.xml

<configuration>
<!--配置namenode的地址-->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master01:9820</value>
	</property>
	<!--配置数据存储目录-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/software/hadoop/hadoop313/data</value>
	</property>
	<!--配置HDFS网页登录使用的静态用户为root-->
	<property>
		<name>hadoop.http.staticuser.user</name>
		<value>root</value>
	</property>
	<!--配置root(超级用户)允许通过代理访问的主机节点-->
	<property>
		<name>hadoop.proxyuser.root.hosts</name>
		<value>*</value>
	</property>
	<!--配置root(超级用户)允许通过代理用户所属组-->
	<property>
		<name>hadoop.proxyuser.root.groups</name>
		<value>*</value>
	</property>
	<!--配置root(超级用户)允许通过代理的用户-->
	<property>
		<name>hadoop.proxyuser.root.user</name>
		<value>*</value>
	</property>

</configuration>

hdfs-site.xml

<configuration>
<!--配置namenode web访问地址-->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>master01:9870</value>
	</property>
	<!--配置secondary namenode web访问地址-->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>master02:9868</value>
	</property>
	<!--配置hdfs副本数量-->
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>

</configuration>

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<!--配置mr的执行方式-->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<!--配置ResourceManager的地址-->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>master02</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>
	<!--配置yarn容器允许分配的最小内存-->
	<property>
		<name>yarn.scheduler.minimum-allocation-mb</name>
		<value>512</value>
	</property>
	<!--配置yarn容器允许分配的最大内存-->
	<property>
		<name>yarn.scheduler.maximum-allocation-mb</name>
		<value>1536</value>
	</property>
	<!--配置yarn容器允许管理的物理内存大小-->
	<property>
		<name>yarn.nodemanager.resource.memory-mb</name>
		<value>1536</value>
	</property>
	<!--配置关闭yarn对物理内存和虚拟内存的限制检查,
	jdk8运行于centos6以上版本会导致虚拟内存过大-->
	<property>
		<name>yarn.nodemanager.pmem-check-enabled</name>
		<value>false</value>
	</property>
	<!--配置关闭yarn对物理内存和虚拟内存的限制检查-->
	<property>
		<name>yarn.nodemanager.vmem-check-enabled</name>
		<value>false</value>
	</property>
	<!--开启日志聚集-->
	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
	</property>
	<!--配置日志聚集服务器地址-->
	<property>
		<name>yarn.log.server.url</name>
		<value>http://master01:19888/jobhistory/logs</value>
	</property>
	<!--配置日志保留时间为7天-->
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>604800</value>
	</property>
</configuration>

mapred-site.xml

<configuration>

<!--配置mapreduce运行于yarn上:默认为local,也可以指定spark阶段了解的mesos-->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	<!--配置历史服务器地址-->
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>master02:10020</value>
	</property>
	<!--配置历史服务器web端地址-->
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>master02:19888</value>
	</property>
</configuration>

7.依旧在/opt/software/hadoop/hadoop313/etc/hadoop下,编辑workers文件。

vi workers
//在文件中写入
master01
master02
slave01
slave02

pi超级节点 use docker compose v2 pi超级节点配置_数据仓库_08

8.更改一下hadoop313的用户权限。(其他节点也需要修改一下哦)

//首先切换路径至/opt/software/hadoop/
cd /opt/software/hadoop/
//再使用以下命令查看当前用户的权限是不是root
ls -la
//如果不是的话,使用以下命令更改权限
chown -R root:root hadoop313/

9.激活环境变量。

source /etc/profile

10.格式化namenode

hdfs namenode -format

11.继续使用allsend.sh拷贝hadoop及环境变量my.sh给其他节点

//先拷贝hadoop
./allsend.sh /opt/software/hadoop/ /opt/software/
//再拷贝my.sh
./allsend.sh /etc/profile.d/my.sh /etc/profile.d/

12.再啰嗦一下,记得看一下第8步骤,更改其他节点的hadoop313用户权限哦

13.激活一下各个节点的环境变量。

source /etc/profile

14.在master01上运行start-dfs.sh服务

pi超级节点 use docker compose v2 pi超级节点配置_数据仓库_09

15.在master02上运行start-yarn.sh服务

pi超级节点 use docker compose v2 pi超级节点配置_大数据_10

pi超级节点 use docker compose v2 pi超级节点配置_hadoop_11

pi超级节点 use docker compose v2 pi超级节点配置_大数据_12

16.测试hadoop是否安装成功。在master01上,切换路径至/opt/software/hadoop/hadoop313/share/hadoop/mapreduce。运行以下命令:

hadoop jar hadoop-mapreduce-examples-3.1.3.jar pi 1 1

 以下为成功运行结果:

pi超级节点 use docker compose v2 pi超级节点配置_数据仓库_13

17.hadoop性能测试

先切换路径至/opt/software/hadoop/hadoop313/share/hadoop/mapreduce/

先测试hdfs写

运行以下命令:(可以将128MB换成512MB测)

hadoop jar hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -write -nrFiles 5 -fileSize 128MB

运行结果如下:

pi超级节点 use docker compose v2 pi超级节点配置_数据仓库_14

其中,Throughput mb/sec:节点平均吞吐(5个文件总量/所有文件写的时间总和)
           Average IO rate mb/sec:每个文件写速率(单个文件大小1/单个文件时间1+...)/文件数
           IO rate std deviation: 标准差反应节点差异

再测试hdfs读

hadoop jar hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -read -nrFiles 5 -fileSize 128MB

 运行结果如下:

pi超级节点 use docker compose v2 pi超级节点配置_jdk1.8_15

最后清除刚刚的job

hadoop jar hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -clean

 运行结果如下: 

pi超级节点 use docker compose v2 pi超级节点配置_数据仓库_16

至此,jdk,scala,hadoop安装配置完毕!