1. Linux

Hadoop-3.1.2(Cluster) 安装小记

1.写在前面

本次主要是使用Oracle VM VirtualBox多开CentOS进行 模拟集群测试。

2.配置每个节点

1.每个节点都要安装Hadoop-3.1.2。

2.每个节点都要安装并且配置好Java环境。

这里Java我选择直接从Oracle官网下载最新的rpm包然后使用yum直接安装,安装完成后再配置/etc/profile  文件

nano /etc/profile

在末尾添加

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

之后刷新

source /etc/profile

此时执行

echo ${JAVA_HOME}

出现以下类似结果表示设置正确

3.然后对每个节点执行单节点测试

(当然对于上千节点还是在master上配置好后直接分发给slave比较方便)

3.进行集群配置

接下来集群将会根据这张表格进行配置

1.配置hosts

nano /etc/hosts

添加如下内容

(根据自己机器的IP地址具体情况而定)

【第一次配置时没有去改这个hosts结果配置完成后OverView里有三个节点而Datanode Information只显示一个节点】

2.配置SSH

主要是方便以后群起,群关使用。

生成key(每个节点都需要生成)

ssh-keygen -t rsa

一直回车即可

然后在master上copy key 到slave

ssh-copy-id [ip]

这里还要在slave1上copy key 到另外两个(因为yarn服务在slave1上)

3.修改Hadoop配置文件

需要配置的文件的位置为/hadoop-2.6.4/etc/hadoop,需要修改的有以下几个

hadoop-env.sh

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

works

其中

hadoop-env.sh和yarn-env.sh里面都要添加jdk的环境变量。

 

hadoop-env.sh

# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
# export JAVA_HOME=

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64

 

core-site.xml

<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://10.160.91.234:9000</value>
	</property>

	<property>
		<name>hadoop.tmp.dir</name>
		<value>/root/hadoop-3.1.2/data/tmp</value>
	</property>
</configuration>

 

hdfs-site.xml

<configuration>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>10.160.91.232:50090</value>
	</property>
	<property>
		<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
		<value>false</value>
	</property>
</configuration>

 

mapred-site.xml


<configuration>
	<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
	</property>
	
	<property>
	<name>mapreduce.jobhistory.address</name>
	<value>10.160.91.234</value>
	</property>

	<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>10.160.91.234</value>
	</property>

	<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
	</property>

	<property>
	<name>yarn.log-aggreation.retain-seconds</name>
	<value>604800</value>
	</property>
</configuration>

 

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>10.160.91.233</value>
</property>
</configuration>

 

works

10.160.91.234
10.160.91.233
10.160.91.232

注意:集群配置文件所有机器要保持一致,可以现在master上改好然后用scp分发给slave节点当然也可以使用脚本自动分发

4.启动

在启动之前要进行格式化:

注意:第一次格式化不需要删除data和logs,但是以后每次格式化都要将所有节点上的 data 和 logs 删除

master执行格式化命令:

bin/hdfs namenode –format

 

1.挨个启动方法

启动namenode命令:

sbin/hadoop-daemon.sh start namenode

启动datanode命令:

sbin/hadoop-daemon.sh start datanode

启动nodemanager命令:

sbin/yarn-daemon.sh start nodemanager

以此类推… …

2.群起方法

在master上启动dfs

sbin/start-dfs.sh

在slave1上启动resourcemanger

sbin/start-yarn.sh

可以使用jps查看启动情况

 

下面是我的namenode information和 all application

如果你用的时root账户则在群起时会报错

只需根据提示添加相应内容即可

start-yarn.sh

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

 

start-dfs.sh

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

 

出现任何错误都可以通过查看日志 logs/ 下的对应文件解决!!!

namenode information地址:http://10.160.91.233:8088

all application地址:http://10.160.91.234:9870