1

一、Hadoop运行环境搭建

  1. 把java和hadoop的压缩文件拷贝到服务器,路径是:

    1
    /opt/software/
  2. 解压java和hadoop,解压命令以及路径

    1
    2
    3
    解压路径以及解压的位置
    tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
    tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
  3. 配置java和hadoop的环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 在 /etc/profile 文件末尾添加JDK和hadoop路径
    #JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_144
    export PATH=$PATH:$JAVA_HOME/bin

    ##HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-2.7.2
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin


    # 重新载入配置文件
    source /etc/profile
  4. 配置本地的hosts和hostname

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    本地虚拟机的外网地址是192.168.1.111,给本机起名为:hadoop111
    配置 /etc/hostname
    文件里面就写一行:
    hadoop111

    配置 /etc/hosts
    里面写多个机器地址:
    192.168.1.111 hadoop111 hadoop111.com
    192.168.1.112 hadoop112 hadoop112.com
    192.168.1.113 hadoop113 hadoop113.com

二、本地运行模式-官方WordCount案例

1
[atguigu@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput

三、分布式运行模式

1)、启动HDFS并运行MapReduce

第一步、配置集群

1. 把JAVA_HOME改成绝对路径

1
2
3
4
5
[atguigu@ hadoop101 ~]# echo $JAVA_HOME
/opt/module/jdk1.8.0_144

修改/etc/profile中的JAVA_HOME 路径:
export JAVA_HOME=/opt/module/jdk1.8.0_144

2.修改core-site.xml

把输入输出文件地址从本地改成HDFS上去,同时指定日志文件路径。

1
2
3
4
5
6
7
8
9
10
11
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop111:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

3.配置:hdfs-site.xml

指定HDFS文件的备份数量,原来默认的值是3,改成1

1
2
3
4
5
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

第二步、启动集群

1.格式化namenode

1
2
3
4
5
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs namenode -format
# 第一次直接格式化,之后格式的时候要分几步操作
# 1.先停掉jps里面的程序
# 2.删除 data和tmp文件夹
# 3.再执行格式化命令

2.启动namenode和datanode

1
2
3
4
5
6
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode

# 停止命令
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh stop namenode
[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh stop datanode

3.查看集群启动情况和日志

1
2
3
4
5
6
7
8
9
10
11
# 1.查看是否启动成功
[atguigu@hadoop101 hadoop-2.7.2]$ jps
13586 NameNode
13668 DataNode
13786 Jps

# 2.web端查看HDFS文件系统
http://hadoop101:50070/dfshealth.html#tab-overview

# 3.查看产生的Log日志
/opt/module/hadoop-2.7.2/logs

第三步、操作集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#1.在HDFS文件系统上创建一个input文件夹
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/atguigu/input

#2.将测试文件内容上传到文件系统上
[atguigu@hadoop101 hadoop-2.7.2]$bin/hdfs dfs -put wcinput/wc.input /user/atguigu/input/

#3.查看上传的文件是否正确
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -ls /user/atguigu/input/
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/ input/wc.input

#4.运行MapReduce程序
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output

#5.查看输出结果
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*

#6.将测试文件内容下载到本地
[atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -get /user/atguigu/output/part-r-00000 ./wcoutput/

#7.删除输出结果
[atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -rm -r /user/atguigu/output

2)、启动YARN并运行MapReduce程序

第一步、配置集群

  1. 配置yarn-env.sh中的JAVAHOME的绝对路径

    1
    2
    3
    4
    [atguigu@ hadoop101 ~]# echo $JAVA_HOME
    /opt/module/jdk1.8.0_144

    export JAVA_HOME=/opt/module/jdk1.8.0_144
  2. 配置:yarn-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!-- Reducer获取数据的方式 -->
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop111</value>
    </property>

  3. 配置:mapred-env.sh中的JAVAHOME

  4. 配置:mapred-site.xml

    (对mapred-site.xml.template重新命名为mapred-site.xml)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [atguigu@hadoop101 hadoop]$ mv mapred-site.xml.template mapred-site.xml
    [atguigu@hadoop101 hadoop]$ vi mapred-site.xml

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

第二步、启动集群

1
2
3
4
5
6
7
8
1.初次启动一定先格式化每个机器,并且删除 data/和 logs/文件夹
bin/hdfs namenode -format

2.在namenode节点启动hdfs
sbin/start-dfs.sh

3.在yarn节点启动yarn
sbin/start-yarn.sh