3台阿里云服务器搭建Hadoop集群

Hadoop集群搭建

Hadoop框架采用Java语言编写,需要Java环境

服务器环境准备

三台服务器,三个服务器网络互通,相互可以免密登陆

集群规划

框架 Linux121 linux122 linux123
HDFS NameNode、DataNode DataNode DataNode,SecondaryNameNode
Yarn NodeManager NodeManager RersourceManager、NodeManager

修改每台服务器的 /etc/hosts

使用ifconfig命令查看自己的IP,改为自己服务器的IP

172.18.0.5 linux121
172.18.0.6 linux122
172.18.0.7 linux123

SSH无密码登陆

在每台服务器上都执行以下命令,执行后会有多个输入提示,不用输入任何内容,全部直接回车即可

ssh-keygen 

输入下面命令时,需要用到该服务器的密码

ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@linux121 
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@linux122
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@linux123

安装JDK、HADOOP

下载jdk,去官网即可,下载1.8版本

下载hadoop包

wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz

解压,jdk、hadoop

tar -zxvf hadoop-2.9.2.tar.gz -C ../servers
tar -zxvf jdk-8u231-linux-x64.tar.gz -C ../servers

修改/etc/profile,配置环境变量

#### JAVA_HOME
export JAVA_HOME=/opt/servers/jdk1.8.0_231
export PATH=$PATH:$JAVA_HOME/bin

##HADOOP_HOME
export HADOOP_HOME=/opt/servers/hadoop-2.9.2 
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

重新加载/etc/profile

source /etc/profile

验证

java -version
hadoop version

hadoop 目录

Hadoop目录.png
  1. bin 目录:对hadoop进行操作的相关命令,如hadoop、hdfd等

  2. etc目录:存放hadoop的配置文件目录

  3. include目录

  4. lib目录:存放hadoop本地库(解压缩)

  5. linexec目录

  6. sbin目录:存放的是hadoop集群启动、停止相关脚本命令

  7. share目录:官方案例jar,文档

集群配置

Hadoop集群的配置=HDFS集群配置+MapReduce集群配置+Yarn集群配置

  • HDFS集群配置
    1. 将JDK路径明确配置给HDFS(修改hadoop-env.sh)
    2. 指定NameNode节点数以及数据存储目录(修改core-site.xml)
    3. 指定SecondaryNameNode节点(修改hdfs-site.xml)
    4. 指定DataNode从节点(修改/etc/hadoop/slaves文件,每个节点配置信息占一行)
  • MapReduce集群配置
    1. 将JDK路径明确配置给MapReduce(修改mapred-env.sh)
    2. 指定MapReduce计算框架运行Yarn资源调度的框架(修改mapred-site.xml)
  • Yarn集群配置
    1. 将JDK路径明确配置给Yarn(修改yarn-env.sh)
    2. 指定ResourceManager老大节点所在计算机节点(修改yarn-site.xml)
    3. 指定NodeManager节点,会通过slaves文件内容确定

HDFS集群配置

将JDK路径明确配置给HDFS(修改hadoop-env.sh)
vim hadoop-env.sh
找到export JAVA_HOME=${JAVA_HOME},将${JAVA_HOME}换成自己的java路径
指定NameNode节点数以及数据存储目录(修改core-site.xml)
vim core-site.xml

在<configuration>中添加

     <!--指定HDFS中NameNode地址 -->  
   <property>
        <name>fs.defaultFS</name>
        <value>hdfs://linux121:9000</value>
    </property>
     <!-- 指定Hadoop运行时产生文件存储的目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/servers/hadoop-2.9.2/data/tmp</value>
    </property>
指定SecondaryNameNode节点(修改hdfs-site.xml)
vim hdfs-site.xml

在<configuration>中添加

      <!-- 指定Hadoop辅助名称节点主机配置 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>linux123:50090</value>
    </property>
    <!-- 副本数量 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

官方默认配置

https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/hdfs- default.xml
指定DataNode从节点(修改/etc/hadoop/slaves文件,每个节点配置信息占一行)
vim slaves

删除原来的localhost,写入下面的信息

linux121
linux122
linux123

MapReduce集群配置

将JDK路径明确配置给MapReduce(修改mapred-env.sh)
vim mapred-env.sh

放开export JAVA_HOME=... 的注释,修改为自己的Java home 路径

指定MapReduce计算框架运行Yarn资源调度的框架(修改mapred-site.xml)

由于本身没有mapred-site.xml,只有 mapred-site.xml.template文件,所以执行:

cp mapred-site.xml.template mapred-site.xml

复制一个文件

vim mapred-site.xml

在<configuration>中添加

<!-- 指定MR运行在Yarn上 -->    
        <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
  

mapred-site.xml默认配置

https://hadoop.apache.org/docs/r2.9.2/hadoop-mapreduce-client/hadoop-mapreduce- client-core/mapred-default.xml

Yarn集群配置

将JDK路径明确配置给Yarn(修改yarn-env.sh)

放开export JAVA_HOME=... 的注释,修改为自己的Java home 路径

指定ResourceManager老大节点所在计算机节点(修改yarn-site.xml)######
<!-- 指定YARN的ResourceManager的地址 --> 
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>linux123</value>
    </property>
    <!-- Reducer获取数据的方式 --> 
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
指定NodeManager节点,会通过slaves文件内容确定

slaves文件已修改

修改权限

chown -R root:root /opt/servers/hadoop-2.9.2

分发配置

rsync 和 scp 都可以复制,但是rsync速度快,只复制内容有差异的文件

下载rsync

yum install -y rsync

编写脚本

## 需求:循环复制文件到集群所有节点的相同节点的相同目录下
## 使用方式:脚本+需要复制的文件名称
#!/bin/bash
#1、获取脚本传入参数,参数个数,如果传入的参数为0个,退出
paramnum=$#
if((paramnum==0));
exit;
fi
## 获取文件名称
#### 获取第一个参数
p1=$1
###获取文件名称。如传入参数为/opt/servers/hadoop,则file_name 为 hadoop
file_name=`basename $p1`
### 输出
echo f_name = ${file_name}
#### 获取文件路径
#### 该方式适用于参数为绝对路径/opt/servers/hadoop
### dir_name=`dirname $p1`
#### 如传相对路径
dir_name=`cd -P $(dirname $p1);pwd`
##输出
echo dirname=${dir_name}
### 获取用户信息
user=`whoami`
#执行rsync命令,循化执行,要把数据发送到集群中所有的节点中
for((host=121;host<124;host++));
do
##输出
echo -------target hostname=linux${host}--------
###执行rsync命令
rsync -rvl ${dir_name}/${file_name} ${user}@linux${host}:${dir_name}
done

集群群起

如果集群是第一次启动,需要在NameNode所在的节点格式化,非第一次不用执行格式化NameNode操作

hadoop namenode -format

在linux121服务器上执行

start-dfs.sh    

在linux123服务器上执行

start-yarn.sh

注意:NameNode和ResourceManager不在同一个机器,不能在NameNode上启动Yarn,应该在ResourceManager所在的机器上启动Yarn

集群测试

HDFS分布式文件存储初体验

从本地文件系统上传下载文件验证HDFS集群工作

### 在hadoop中创建一个目录
hdfs dfs -mkdir -p /test/input
### 在本地创建一个文件
cd /root
vim test.txt
### 在test.txt文件上写入
hello hefs
###保存退出后,上传文件到HDFS
hdfs dfs -put /root/test.txt /test/input
###上传成功后。可以将/root下的test.txt删除后下载
hdfs dfs -get /test/input/test.txt 

MapReduce初体验

统计单词

###在HDFS文件系统根目录下创建一个wcinput文件夹
hdfs dfs -mkdir /wcinput
###本地生成一个文件
cd /root
vim wc.txt
### 写入内容:
hadoop mapreduce yarn
hdfs hadoop mapreduce
mapreduce yarn


###保存退出后,上传wc.txt到HDFS的/wcinput目录下
hdfs dfs -put /root/wc.txt /wcinput
### 执行hadoop自带的example
hadoop jar hadoop-2.9.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput

##查看结果
hdfs dfs -cat /wcoutput/part-r-00000
### 结果为
hadoop  2
hdfs    1
mapreduce       3
yarn    2

配置历史服务器

配置mapred-site.xml

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
  <value>linux121:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>linux121:19888</value>
</property>

分发mapred-site.xml到其它节点

rsync-script mapred-site.xml

启动历史服务器

mr-jobhistory-daemon.sh start historyserver

查看历史服务器石是否启动

jps

查看JobHistory

http://linux121:19888/jobhistory

配置日志的聚集

开启日志聚集的好处就是将运行日志汇总到HDFS系统中,方便开发调试

配置yarn-site.xml

<!-- 日志聚集功能使用 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

分发

rsync-script yarn-site.xml

在ResourceManager服务器上停止Yarn集群

stop-yarn.sh

重启jobhistory

mr-jobhistory-daemon.sh stop historyserver
mr-jobhistory-daemon.sh start historyserver

在ResourceManager服务器启动Yarn集群

start-yarn.sh

删除HDFS已经存在的输出文件

hdfs dfs -rm -R /wcoouput

重新执行wordCount程序

hadoop jar hadoop-2.9.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput

查看日志

http://linux121:19888/jobhistory
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358