阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7.3下Hadoop2.8分布式集群安装与测试

129次阅读
没有评论

共计 5805 个字符,预计需要花费 15 分钟才能阅读完成。

1.Hadoop2.x 概述

hadoop2NameNode 可以有多个(目前只支持 2 个)。每一个都有相同的职能。一个是 active 状态的,一个是 standby 状态的。当集群运行时,只有 active 状态的 NameNode 是正常工作的,standby状态的 NameNode 是处于待命状态的,时刻同步 active 状态 NameNode 的数据。一旦 active 状态的 NameNode 不能工作,standby状态的 NameNode 就可以转变为 active 状态的,就可以继续工作了。

2NameNode 的数据其实是实时共享的。新 HDFS 采用了一种共享机制,Quorum Journal NodeJournalNode)集群或者 Network File SystemNFS)进行共享。NFS 是操作系统层面的,JournalNodehadoop 层面的,我们这里使用 JournalNode 集群进行数据共享(这也是主流的做法)。JournalNode的架构图如下:

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试   

两个 NameNode 为了数据同步,会通过一组称作 JournalNodes 的独立进程进行相互通信。当 active 状态的 NameNode 的命名空间有任何修改时,会告知大部分的 JournalNodes 进程。standby状态的 NameNode 有能力读取 JNs 中的变更信息,并且一直监控 edit log 的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。

对于 HA 集群而言,确保同一时刻只有一个 NameNode 处于 active 状态是至关重要的。否则,两个 NameNode 的数据状态就会产生分歧,可能丢失数据,或者产生错误的结果。为了保证这点,这就需要利用使用 ZooKeeper 了。首先 HDFS 集群中的两个 NameNode 都在 ZooKeeper 中注册,当 active 状态的 NameNode 出故障时,ZooKeeper能检测到这种情况,它就会自动把 standby 状态的 NameNode 切换为 active 状态。

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

Hadoop 安装分为三种方式,分别为单机、伪分布式、完全分布式,安装过程不难,在此主要详细叙述完全分布式的安装配置过程,毕竟生产环境都使用的完全分布式,前两者作为学习和研究使用。按照下述步骤一步一步配置一定可以正确的安装 Hadoop 分布式集群环境。

2、搭建

2.1 网络环境

No.

Host Name

IP Address

Node Type

User Name

1

Maser

192.168.1.106

Name Node

hadoop/root

2

Slave1

192.168.1.107

Data Node

hadoop/root

3

Slave2

192.168.1.108

Data Node

hadoop/root

   

2.2、软硬件环境

CentOS 7.3

Java-1.8.0-openjdk

Hadoop 2.8.1

   

2.3、环境搭建

All nodes are disabled SELinux and firewalld

All nodes can ping with each other

All nodes have same hadoop directory structure and a same user account

Create a hadoop user, home directory is /home/hadoop, add into root group.

hadoop directory is /usr/local/hadoop, directory owner is hadoop

Master node and slave node can SSH with no password publick key authentication

All nodes have same /etc/hosts, add master node and slave node record line

   

SSH采用了公钥加密。过程如下: 

(1)远程主机收到用户的登录请求,把自己的公钥发给用户。 

(2)用户使用这个公钥,将登录密码加密后,发送回来。 

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

   

3、安装配置Java

3.1、安装 Java

安装 JDK 以及配置环境变量,需要以 “root” 的身份进行

# yum search jdk

# yum -y install java-1.8.0-openjdk*

   

3.2、配置 java 环境

新建配置文件etc/profile/java.sh

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

export JAVA_HOME=/usr/lib/jvm/java

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib

export HADOOP_HOME=/usr/local/hadoop

export PATH=.:$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin:CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试 CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试 CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试  CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试 CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试 CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试 CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试 CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试 CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试  HADOOPHOME/bin: {HADOOP_HOME}/sbin

   

3.3、验证

# java -version

# javac -version

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

4、安装配置 hadoop

4.1 安装

# cd /usr/local/src

# wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz

# tar -vxzf hadoop-2.8.1

# mv hadoop-2.8.1 ../hadoop

# chown -R hadoop:hadoop hadoop

   

4.2 配置 hadoop 环境

/etc/profile.d/java

   

4.3.2 创建 hadoop 子目录

# cd /usr/local/hadoop

# mkdir tmp hdfs

# cd hdfs

# mkdir name tmp data

   

4.3 hadoop 配置文件

进入到 $HADOOP_HOME/etc/hadoop 目录修改配置文件,配置项可参考文档http://hadoop.apache.org/docs/r2.8.0/

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

4.3.1 hadoop-env.sh

验证

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

4.3.2 core-site.xml

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop/tmp</value>

<final>true</final>

<!–(备注:请先在 /usr/hadoop 目录下建立 tmp 文件夹)–>

<description>A base for other temporary directories.</description>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://master:9000</value>

<!– hdfs://Master.Hadoop:22–>

<final>true</final>

</property>

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

</configuration>

   

4.3.3 hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.name.dir</name>

<value>/usr/local/hadoop/hdfs/name</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>/usr/local/hadoop/hdfs/data</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>master.hadoop:9001</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

</configuration>

   

4.3.4 mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

   

4.3.5 yarn-site.xml

<configuration>

<!– Site specific YARN configuration properties –>

<property>

<name>yarn.resourcemanager.address</name>

<value>Master.Hadoop:18040</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>Master.Hadoop:18030</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>Master.Hadoop:18088</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>Master.Hadoop:18025</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>Master.Hadoop:18141</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

</configuration>

   

4.3.6 /usr/local/hadoop/etc/hadoop/masters 文件

/usr/local/hadoop/etc/hadoop/slaves

   

4.4 Slave node 上 java/hadoop 安装与配置

4.4.1 java/openjdk 安装同 master node

在 master node 上

scp /etc/profile.d/java.sh slave1:/etc/profile.d

scp /etc/profile.d/java.sh slave2:/etc/profile.d

4.4.2 Hadoop安装

在 master node 上

scp -r /usr/local/hadoop slave1:/usr/local

scp -r /usr/local/hadoop slave1:/usr/local

4.4.3 改变权限

chown -R hadoop:hadoop /usr/lib/jvm/java-1.8.0-openjdk-*

chown -R hadoop:hadoop /usr/local/hadoop

   

5、测试、验证

5.1

$ hadoop namenode -format

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

$ start-all .sh

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

$ ps -ef |grep hadoop

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

$ jps

master (master)

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

slave1 (Secondary master)

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

slave2

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

5.2 通过网页查看集群 

在本地访问HDFS WebUI: http://8088:50070

YARN WebUI: http://master:8088

   

5.3 hadoop 集群系统提交第一个 mapreduce 任务(wordcount)

5.3.1 cd /home/hadoop

$ cat >>test.txt<<EOF

Hello World

Hello World

Hello World

Hello World

   

5.3.2 进入本地 hadoop 目录(/usr/local/hadoop

$ hdfs dfs -mkdir -p /data/input在虚拟分布式文件系统上创建一个测试目录/data/input

$ hdfs dfs -put test.txt  /data/input  将当前目录下的 README.txt  文件复制到虚拟分布式文件系统中

$ hdfs dfs-ls /data/input    查看文件系统中是否存在我们所复制的文件

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

   

5.3.3  运行如下命令向 hadoop 提交单词统计任务

进入 jar 文件目录,执行下面的指令。

$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar \

wordcount \

/data/input /data/output/result

   

查看 result,结果在result 下面的 part-r-00000

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-09/146864.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计5805字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中