Hadoop 3.2.0 完全分布式集群搭建 与 WordCount 运行

一.集群环境搭建

首先准备4台服务器(虚拟机)

设置静态ip与地址映射: centos7 修改为静态ip并设置地址映射

地址映射为如下

然后设置集群SSH免密登录与分发脚本: centos7配置集群SSH免密登录(包含群发文件脚本)

如果有防火墙记得关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

下载 hadoop3.1.2 分别上传到4台服务器的 /root/hadoop 目录

地址: http://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz

上传后 将4台设备 分别执行解压 重命名

cd /root/hadoop
tar -zxvf /root/hadoop/hadoop-3.2.0.tar.gz

安装JDK1.8 将jdk下载并解压到 /root/jdk 重命名为 jdk8

下载地址: Java Downloads | Oracle

编辑 /etc/profile 设置环境变量

vim /etc/profile

在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 下添加

export JAVA_HOME=/root/jdk/jdk8/
export JRE_HOME=/root/jdk/jdk8/jre
export HADOOP_HOME=/root/hadoop/hadoop-3.2.0/
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/root/bin
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

更新 profile 文件

source /etc/profile

测试环境变量是否生效

java -version   hadoop version

二.Hadoop配置修改

进入到 hadoop 配置文件目录下

cd /root/hadoop/hadoop3.2.0/etc/hadoop

修改 hadoop-env.sh 配置 jdk 路径,定义集群操作用户

在最下面增加

export JAVA_HOME=/root/jdk/jdk8

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

export HADOOP_PID_DIR=/root/hadoop/data/pids
export HADOOP_LOG_DIR=/root/hadoop/data/logs

修改 core-site.xml hadoop核心配置

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop-1:8020</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/root/hadoop/data/tmp</value>
  </property>
</configuration>
  • fs.defaultFS为NameNode的地址,hadoop.tmp.dir为hadoop临时目录的地址

修改 hdfs-site.xml hadoop 从节点配置

<configuration>
   <property>
     <name>dfs.namenode.http-address</name>
     <value>hadoop-1:9870</value>
   </property>
   <property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>hadoop-2:50090</value>
   </property>
   <property>
     <name>dfs.replication</name>
     <value>2</value>
   </property>
   <property>
     <name>dfs.namenode.name.dir</name>
     <value>file:/root/hadoop/data/hdfs/name</value>
   </property>
   <property>
     <name>dfs.datanode.data.dir</name>
     <value>file:/root/hadoop/data/hdfs/data</value>
   </property>
</configuration>

  • dfs.replication 为副本数
  • dfs.namenode.secondary.http-address是指定secondaryNameNode的http访问地址和端口号
  • 这里将 hadoop-2 设置为 SecondaryNameNode服务器 

修改 workers 告知 hadoop hdfs上有哪些DataNode节点

hadoop-2
hadoop-3
hadoop-4

修改 yarn-site.xml 配置yarn服务

<configuration>
    <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
   </property>
   <property>
      <name>yarn.nodemanager.localizer.address</name>
      <value>0.0.0.0:8140</value>
   </property>
   <property>
       <name>yarn.resourcemanager.hostname</name>
       <value>hadoop-1</value>
   </property>
   <property>
       <name>yarn.resourcemanager.webapp.address</name>
       <value>hadoop-1:8088</value>
   </property>
   <property>
       <name>yarn.log-aggregation-enable</name>
       <value>true</value>
   </property>
   <property>
       <name>yarn.log-aggregation.retain-seconds</name>
       <value>604800</value>
   </property>
   <property>
       <name>yarn.log.server.url</name>
       <value>http://hadoop-4:19888/jobhistory/logs</value>
   </property>
</configuration>
  • yarn.resourcemanager.webapp.address  配置 resourcemanager  服务器的地址与端口
  • yarn.resourcemanager.hostname  指定  resourcemanager  服务器
  • yarn.log-aggregation-enable  是配置是否启用日志聚集功能
  • yarn.log-aggregation.retain-seconds  是配置聚集的日志在HDFS上最多保存多长时间
  • yarn.log.server.url  配置yarn日志服务器地址

修改mapred-site.xml 文件

<configuration>
   <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
   </property>
   <property>
       <name>yarn.app.mapreduce.am.env</name>
       <value>HADOOP_MAPRED_HOME=/root/hadoop/hadoop-3.2.0</value>
   </property>
   <property>
       <name>mapreduce.map.env</name>
       <value>HADOOP_MAPRED_HOME=/root/hadoop/hadoop-3.2.0</value>
   </property>
   <property>
       <name>mapreduce.reduce.env</name>
       <value>HADOOP_MAPRED_HOME=/root/hadoop/hadoop-3.2.0</value>
   </property>
   <property>
       <name>mapreduce.jobhistory.address</name>
       <value>hadoop-4:10020</value>
   </property>
   <property>
       <name>mapreduce.jobhistory.webapp.address</name>
       <value>hadoop-4:19888</value>
   </property>
</configuration>
  • yarn.app.mapreduce.am.env   mapreduce.map.env   mapreduce.reduce.env 
  • 这三个是为mapreduce指定hadoop目录 如果不配置会出现  运行mapreduce找不到main方法等错误
  • mapreduce.jobhistory.address  配置任务历史服务器地址
  • mapreduce.jobhistory.webapp.address 配置历史服务器web访问地址

将修改好的配置文件 分发到 从节点的三台服务器上

在当前目录下 执行xsync分发脚本

xsync hadoop-env.sh
xsync core-site.xml
xsync hdfs-site.xml
xsync workers
xsync yarn-site.xml
xsync mapred-site.xml

配置完成

三.Hadoop服务启动

在hadoop-1节点执行namenode初始格式化命令 (仅第一次启动需要执行)

hdfs namenode -format

执行成功 并生成 目录

cd /root/hadoop/data/dfs/name

 

生成集群唯一id,说明执行成功了

在hadoop-1执行命令

start-dfs.sh
start-yarn.sh

或者可以执行

start-all.sh

在hadoop-4执行命令 启动job历史服务

mapred --daemon start historyserver

执行完成后分别对4台设备使用jps查看进程

启动成功 

  • hadoop-1 为 NameNode ResourceManager 节点
  • hadoop-2 为 SecondaryNameNode DataNode NodeManager 节点
  • hadoop-3 为 DataNode NodeManager 节点
  • hadoop-4 为 DataNode NodeManager JobHistoryServer 节点

查看HDFS web界面 http://hadoop-1:9870

查看 YARN web界面  http://hadoop-1:8088 

hadoop搭建完成

四.运行WordCount

首先在 /root 目录下创建一个txt文件

vim /root/test.txt

内容如下

hadoop 1
hadoop 2
hadoop 3
hadoop 4
hadoop 5
hadoop 6
hadoop 7
hadoop 8
hadoop 9
hadoop 10

将test.txt文件上传到 hdfs 执行命令

hdfs dfs -mkdir /user/root
hdfs dfs -put /root/test.txt /user/root/

找到官方自带的案例jar

cd /root/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/

运行jar执行MapReduce WordCount案例

hadoop jar hadoop-mapreduce-examples-3.2.0.jar wordcount /user/root/test.txt /root/output
  •  wordcount 后第一个路径为 文件路径
  • 第二个路径为 结果输出路径 (必须是不存在的)

执行成功 查看执行结果

hdfs dfs -lsr /root/output

success为执行成功

part-r-00000  m 为 mapper 输出 , r 为 reduce 输出 , 00000 为 job 任务编号 整个文件为结果输出文件

hdfs dfs -cat /root/output/part-r-00000

文件中 hadoop 词出现了 10次 结果正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的狮子Li

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值