基础配置

三台机器上编辑/etc/hosts配置文件,修改主机名。

Hadoop集群搭建_第1张图片

三台机器在集群中担任的角色:

  • master:NameNode、DataNode、ResourceManager、NodeManager
  • node1:DataNode、NodeManager
  • node2:DataNode、NodeManager

配置ssh免密登录

# 三台机器上分别执行,互相免密登录
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub node1
ssh-copy-id -i ~/.ssh/id_rsa.pub node2

安装JDK

# 官网下载
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
http://anchnet-script.oss-cn-shanghai.aliyuncs.com/oracle/jdk-8u171-linux-x64.rpm
yum localinstall jdk-8u171-linux-x64.rpm -y

配置java环境变量

# 三台均操作
vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
JAVA_BIN=/usr/java/jdk1.8.0_171-amd64/bin
JRE_HOME=/usr/java/jdk1.8.0_171-amd64/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# source命令加载配置文件,让其生效
source /etc/profile

Hadpop配置分发

下载hadoop

https://www.apache.org/dist/hadoop/common/
wget https://www.apache.org/dist/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz

解压

tar -zxvf hadoop-2.6.5.tar.gz -C /data/modules

查看hadoop目录结构

cd /data/modules/hadoop-2.6.5/ 

Hadoop集群搭建

  • bin目录存放可执行文件
  • etc目录存放配置文件
  • sbin目录下存放服务的启动命令
  • share目录下存放jar包与文档

配置hadoop环境变量

vim ~/.bash_profile
export HADOOP_HOME=/data/modules/hadoop-2.6.5/
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source !$

编辑hadoop配置文件

  • 编辑etc/core-site.xml
    
    
        fs.default.name
        hdfs://10.234.2.169:8020
        # 指定默认的访问地址以及端口号
    
  • 编辑etc/hdfs-site.xml
    
    
        dfs.namenode.name.dir
        /data/hadoop/app/tmp/dfs/name
        # namenode临时文件所存放的目录
    
    
        dfs.datanode.data.dir
        /data/hadoop/app/tmp/dfs/data  
        # datanode临时文件所存放的目录
    
  • 创建数据目录
    mkdir -p /data/hadoop/app/tmp/dfs/name
    mkdir -p /data/hadoop/app/tmp/dfs/data
  • 编辑etc/yarn-site.xml
    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
        yarn.resourcemanager.hostname
        master
    
    
  • 编辑etc/mapred-site.xml
    cp mapred-site.xml.template mapred-site.xml
    vim !$
    
    
        mapreduce.framework.name
        yarn
        # 指定mapreduce运行在yarn框架上
    
    
  • 配置从节点的主机名etc/slaves
    node1
    node2

    2台node节点也需创建对应安装目录,环境变量配置等

scp ~/.bash_profile node1:~/.bash_profile
scp * node1:/data/modules/hadoop-2.6.5/etc/hadoop/
# 2台节点上如下操作
source ~/.bash_profile
mkdir -p /data/hadoop/app/tmp/dfs/name
mkdir -p /data/hadoop/app/tmp/dfs/data

Hadoop格式化及启停

对NameNode做格式化,只需要在master上执行即可

[root@master hadoop]# hdfs namenode -format
# 格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中

格式化之后就可以启动Hadoop集群

# sbin目录下,执行脚本,执行后要输入master服务器的密码
[root@master hadoop]# ./start-all.sh

查看机器进程

  • master
    [root@master sbin]# jps
    19237 SecondaryNameNode
    22231 NodeManager
    21978 ResourceManager
    19019 NameNode
    30941 Jps
    21327 DataNode
    # 如果master上的某些服务进程未启动,需要再次手动执行脚本启动
    # 启动NameNode
    sbin/hadoop-daemon.sh start namenode
    # 启动DataNode
    sbin/hadoop-daemon.sh start datanode
    # 启动SecondaryNameNode
    sbin/hadoop-daemon.sh start secondarynamenode
    # 启动Resourcemanager
    sbin/yarn-daemon.sh start resourcemanager
    # 启动nodemanager
    sbin/yarn-daemon.sh start nodemanager
  • node
    [root@node1 ~]# jps
    25827 Jps
    18742 DataNode
    20583 NodeManager

    访问测试

    访问主节点 50070

Hadoop集群搭建_第2张图片

访问主节点 YARN的web页面

Hadoop集群搭建_第3张图片

点击“Active Nodes”查看存活的节点

执行命令

hdfs dfs -ls /
hdfs dfs -mkdir /test123
hdfs dfs -put ./test.sh /test123
#  然后去其他节点查看,不同的节点,访问的数据也是一样的
hdfs dfs -ls /

运行MapReduce Job

在Hadoop的share目录里,自带了一些jar包,里面带有一些mapreduce实例小例子。位置在/data/modules/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar

  • 创建输入目录
    bin/hdfs dfs -mkdir -p /test1/input
    # 原始文件
    [root@master hadoop-2.6.5]# cat /data/hadoop/test1.input 
    hadoop hadoop hive
    mapreduce hive storm
    sqoop hadoop hive
    spark hadoop hbase
  • 上传到HDFS的/test1/input目录中

Hadoop集群搭建

  • 运行WordCount MapReduce Job
    [root@master hadoop-2.6.5]# bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /test1/input /test1/output

Hadoop集群搭建_第4张图片

YARN web控制台查看
Hadoop集群搭建_第5张图片

  • 查看输出结果
    [root@master hadoop-2.6.5]# hdfs dfs -ls /test1/output
    Found 2 items
    -rw-r--r--   3 root supergroup          0 2018-12-13 15:22 /test1/output/_SUCCESS
    -rw-r--r--   3 root supergroup         60 2018-12-13 15:22 /test1/output/part-r-00000
    # output目录中有两个文件,_SUCCESS文件是空文件,有这个文件说明Job执行成功。part-r-00000文件是结果文件,其中-r-说明这个文件是Reduce阶段产生的结果。一个reduce会产生一个part-r-开头的文件。
    # 查看执行结果
    [root@master hadoop-2.6.5]# hdfs dfs -cat /test1/output/part-r-00000
    hadoop  4
    hbase   1
    hive    3
    mapreduce   1
    spark   1
    sqoop   1
    storm   1
    # 结果是按照键值排序好的
  • 停止Hadoop
    # 主节点上执行 stop-all.sh,如果进程未全部终止,就执行如下脚本对应停止。
    [root@master hadoop-2.6.5]# sbin/hadoop-daemon.sh stop namenode
    stopping namenode
    [root@master hadoop-2.6.5]# sbin/hadoop-daemon.sh stop datanode
    stopping datanode
    [root@master hadoop-2.6.5]# sbin/yarn-daemon.sh stop resourcemanager
    stopping resourcemanager
    [root@master hadoop-2.6.5]# sbin/yarn-daemon.sh stop nodemanager
    stopping nodemanager

开启历史服务

Hadoop开启历史服务可以在web页面上查看Yarn上执行job情况的详细信息。可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。

  • 开启日志聚集
    # Hadoop默认是不启用日志聚集的。在yarn-site.xml文件里配置启用日志聚集。
    
    yarn.log-aggregation-enable
    true
    
    
    yarn.log-aggregation.retain-seconds
    106800
    
    # yarn.log-aggregation-enable:是否启用日志聚集功能。
    # yarn.log-aggregation.retain-seconds:设置日志保留时间,单位是秒。

    将配置文件发布到其他节点:

    scp etc/hadoop/yarn-site.xml node1:/data/modules/hadoop-2.6.5/etc/hadoop/
    scp etc/hadoop/yarn-site.xml node2:/data/modules/hadoop-2.6.5/etc/hadoop/

    重启Yarn进程和HistoryServer进程

    sbin/stop-yarn.sh
    sbin/start-yarn.sh
    sbin/mr-jobhistory-daemon.sh stop historyserver
    sbin/mr-jobhistory-daemon.sh start historyserver
  • 测试日志聚集
    运行一个demo MapReduce,使之产生日志:
    [root@master hadoop-2.6.5]# bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount2 /test1/input /test1/output2
    # 访问主节点的19888端口,运行job后就可以在web页面查看各个Map和Reduce的日志了。

Hadoop集群搭建_第6张图片
Hadoop集群搭建_第7张图片
Hadoop集群搭建_第8张图片
Hadoop集群搭建_第9张图片