美文网首页玩转大数据大数据
Hadoop系列-Hadoop 运行模式

Hadoop系列-Hadoop 运行模式

作者: gengqing | 来源:发表于2019-07-09 21:31 被阅读0次

Hadoop 运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
本地(独立)模式:无需运行任何守护进程,所有程序都在同一个JVM上执行,在独立模式下测试和调试MapReduce都非常方便,因此该模式在开发阶段比较适合。
伪分布式模式:Hadoop守护进程运行在本地机器上,模拟一个小规模的集群。
完全分布式:Hadoop守护进程运行在一个集群上。

本地运行模式

1. 官方Grep案例

1. 创建在hadoop-3.2.0文件下面创建一个input文件夹
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ mkdir  input  
2. 将Hadoop的xml配置文件复制到input
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ cp etc/hadoop/*xml input
3. 执行share目录下的MapReduce程序
# 后面用了一个正则表达式来匹配需要的输出,同时指定输入和输出目录
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar grep input output 'dfs[a-z.]+'    
4. 查看输出结果
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ cat output/*    

2. 官方WordCount案例

1. 创建在hadoop-3.2.0文件下面创建一个wcinput文件夹
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ mkdir  wcinput  
2. 在wcinput文件下创建一个wc.input文件
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ cd wcinput  
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0/input
$ touch wc.input
3. 编辑wc.input文件
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0/input
$ vi wc.input
输入如下内容:
hadoop map reduce
mapreduce yarn
hadoop
保存退出
4. 回到hadoop-3.2.0目录执行程序
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar wordcount wcinput/ wcoutput
5. 查看结果
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ cat wcoutput/part-r-00000

本地模式较简单。

伪分布式运行模式

1. 启动HDFS并运行MapReduce程序

准备内容:配置集群,启动、测试集群的增删查、执行WordCount案例
执行步骤
配置集群

  1. 配置etc/hadoop/hadoop-env.sh
首先获取jdk安装路径
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ echo $JAVA_HOME                
/opt/jvm/jdk1.8.0_211
配置环境变量,在etc/hadoop/hadoop-env.sh中:
export JAVA_HOME=/opt/jvm/jdk1.8.0_211
  1. 配置etc/hadoop/core-site.xml(在configration标签中加入下面内容)
<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> # localhost是当前主机名
</property>
<!-- 指定 Hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/jvm/hadoop-3.2.0/data/tmp</value>
</property>
  1. 配置etc/hadoop/hdfs-site.xml
<!-- 指定 HDFS 副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

启动集群

# 格式化NameNode(第一次启动时格式化,以后不能总格式化)
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ bin/hdfs namenode -format 
# 启动namenode
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ sbin/hadoop-daemon.sh start namenode   
# 启动datanode
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ sbin/hadoop-daemon.sh start datanode  
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
# jps命令查看已经启动的项目,需要注意的是jps是jdk中的命令,不是linux中的命令,不安装jdk不能使用
$ jps
15105 Jps
32056 JobHistoryServer
27371 NameNode
31852 NodeManager
31565 ResourceManager
27518 DataNode

web端查看HDFS文件系统
http://localhost:9870/
端口号是9870
查看产生的log日志
切换到所在目录:/opt/jvmhadoop-3.2.0/logs
用cat命令打印日志查看。
操作集群

# 在 HDFS 文件系统上创建一个 input 文件夹
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ bin/hdfs dfs -mkdir -p /user/gengqing/input
# 使用put命令,将测试文件内容上传到文件系统上
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ bin/hdfs dfs -put wcinput/wc.input /user/gengqing/input
# 运行 MapReduce 程序
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar wordcount /user/gengqing/input /user/gengqing/output
# 最后还可以使用cat命令查看输出结果
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ bin/hdfs dfs -cat /user/gengqing/output/p*
# 还可以将文件下载到本地
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ hdfs dfs -get /user/gengqing/output/part-r-0000 ./wcoutput/
# 删除输出结果
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ bin/hdfs dfs -rm -r /user/gengqing/output

2. 启动YARN并运行MapReduce程序

准备内容:配置集群在YARN上运行MR、启动和测试集群增删查、在YARN上执行WordCount案例
执行步骤

  1. 配置etc/hadoop/yarn-env.sh
首先获取jdk安装路径
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ echo $JAVA_HOME                
/opt/jvm/jdk1.8.0_211
配置环境变量,在etc/hadoop/yarn-env.sh中:
## JAVA_HOME
export JAVA_HOME=/opt/jvm/jdk1.8.0_211
if ["$JAVA_HOME" != ""]; then
JAVA_HOME=$JAVA_HOME
fi
  1. 配置etc/hadoop/yarn-site.xml
<!-- Reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop101</value>
</property>
# 需要加上对yarn.application.classpath的配置,否则会报错
</property>
    <property>
        <name>yarn.application.classpath</name>
        <value>
            /opt/jvm/hadoop-3.2.0/etc/hadoop,
            /opt/jvm/hadoop-3.2.0/share/hadoop/common/*,
            /opt/jvm/hadoop-3.2.0/share/hadoop/common/lib/*,
            /opt/jvm/hadoop-3.2.0/share/hadoop/hdfs/*,
            /opt/jvm/hadoop-3.2.0/share/hadoop/hdfs/lib/*,
            /opt/jvm/hadoop-3.2.0/share/hadoop/mapreduce/*,
            /opt/jvm/hadoop-3.2.0/share/hadoop/mapreduce/lib/*,
            /opt/jvm/hadoop-3.2.0/share/hadoop/yarn/*,
            /opt/jvm/hadoop-3.2.0/share/hadoop/yarn/lib/*
        </value>
    </property>
  1. 配置etc/hadoop/mapred-env.sh
配置环境变量,在etc/hadoop/yarn-env.sh中:
## JAVA_HOME
export JAVA_HOME=/opt/jvm/jdk1.8.0_211
  1. 配置etc/hadoop/mapred-site.xml
<!-- 指定 MR 运行在 YARN 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

启动集群

# 启动前必须保证 NameNode 和 DataNode 已经启动
# 启动resurcemanager
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ sbin/yarn-daemon.sh start resurcemanager  
# 启动nodemanager
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ sbin/yarn-daemon.sh start nodemanager  

集群操作
http://localhost:8088/cluster
端口号:8088

3. 配置历史服务器(使得可以在web端查看history)

  1. 配置etc/hadoop/mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>localhost:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost:19888</value>
</property>
  1. 启动历史服务器
dreamgeng at dreamgeng-ubuntu in /opt/jvm/hadoop-3.2.0 
$ sbin/mr-jobhistory-daemon.sh start historyserver
  1. 查看JobHistory
    http://hadoop101:19888/jobhistory

3. 配置日志的聚集(使得可以在web端查看日志)

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上。
日志聚集功能好处: 可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能 , 需要重新启动 NodeManager 、 ResourceManager 和HistoryManager。

  1. 配置etc/hadoop/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>
  1. 关闭 NodeManager 、 ResourceManager 和 HistoryManager
  2. 重启 NodeManager 、 ResourceManager 和 HistoryManager
  3. 删除 HDFS 上已经存在的输出文件
  4. 执行 WordCount 程序
  5. 查看日志

相关文章

网友评论

    本文标题:Hadoop系列-Hadoop 运行模式

    本文链接:https://www.haomeiwen.com/subject/pilzhctx.html