大数据技术之Hadoop(三)

四 、Hadoop 运行模式

1)官方网址

(1)官方网站:

    http://hadoop.apache.org/

(2)各个版本归档库地址

    https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
(3)hadoop2.7.2 版本详情介绍

    http://hadoop.apache.org/docs/r2.7.2/

2)Hadoop 运行模式

(1)本地模式(默认模式):

  不需要启用单独进程,直接可以运行,测试和开发时使用。

(2)伪分布式模式:

  等同于完全分布式,只有一个节点。

(3)完全分布式模式:

  多个节点一起运行。

4.1 本地运行 Hadoop 案例

4.1.1 官方 grep 案例

 1)创建在 hadoop-2.7.2 文件下面创建一个 input 文件夹

[atguigu@hadoop101 hadoop-2.7.2]$mkdir input

 2)将 hadoop 的 xml 配置文件复制到 input

[atguigu@hadoop101 hadoop-2.7.2]$cp etc/hadoop/*.xml input

 3)执行 share 目录下的 mapreduce 程序

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'

 4)查看输出结果

[atguigu@hadoop101 hadoop-2.7.2]$ cat output/*

4.1.2 官方 wordcount 案例

 1)创建在 hadoop-2.7.2 文件下面创建一个 wcinput 文件夹

[atguigu@hadoop101 hadoop-2.7.2]$mkdir wcinput 

 2)在 wcinput 文件下创建一个 wc.input 文件

[atguigu@hadoop101 hadoop-2.7.2]$cd wcinput

[atguigu@hadoop101 wcinput]$touch wc.input

 3)编辑 wc.input 文件

[atguigu@hadoop101 wcinput]$vim wc.input

在文件中输入如下内容
hadoop yarn
hadoop mapreduce
atguigu
atguigu
保存退出::wq

 4)回到 hadoop 目录/opt/module/hadoop-2.7.2

 5)执行程序:

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

 6)查看结果:

[atguigu@hadoop101 hadoop-2.7.2]$cat wcoutput/part-r-00000

atguigu 2

hadoop 2

mapreduce 1

yarn 1

4.2 伪分布式运行 Hadoop 案例

4.2.1 启动 HDFS 并运行 MapReduce 程序

 1)分析:

  (1)准备 1 台客户机

  (2)安装 jdk

  (3)配置环境变量

  (4)安装 hadoop

  (5)配置环境变量

  (6)配置集群

  (7)启动、测试集群增、删、查

  (8)执行 wordcount 案例

 2)执行步骤

  需要配置 hadoop 文件如下

  (1)配置集群

   (a)配置:hadoop-env.sh

     Linux 系统中获取 jdk 的安装路径:

[root@ hadoop101 ~]# echo $JAVA_HOME
/opt/module/jdk1.8.0_144

     修改 JAVA_HOME 路径:
     export JAVA_HOME=/opt/module/jdk1.8.0_144

   (b)配置:core-site.xml

<!--  指定 HDFS 中 NameNode 的地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop101:9000</value>

</property>

<!--  指定 hadoop 运行时产生文件的存储目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

   (c)配置:hdfs-site.xml

<!--  指定 HDFS 副本的数量 -->

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

 (2)启动集群

  (a)格式化 namenode(第一次启动时格式化,以后就不要总格式化)

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs namenode -format 

  (b)启动 namenode

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode 

  (c)启动 datanode

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode

 (3)查看集群

  (a)查看是否启动成功

[atguigu@hadoop101 hadoop-2.7.2]$ jps
13586 NameNode
13668 DataNode
13786 Jps

  (b)查看产生的 log 日志

    当前目录:/opt/module/hadoop-2.7.2/logs

[atguigu@hadoop101 logs]$ ls
hadoop-atguigu-datanode-hadoop.atguigu.com.log
hadoop-atguigu-datanode-hadoop.atguigu.com.out
hadoop-atguigu-namenode-hadoop.atguigu.com.log
hadoop-atguigu-namenode-hadoop.atguigu.com.out
SecurityAuth-root.audit
[atguigu@hadoop101 logs]# cat hadoop-atguigu-datanode-hadoop101.log

  (c)web 端查看 HDFS 文件系统

   http://192.168.1.101:50070/dfshealth.html#tab-overview【根据自己的IP和端口号访问】

   注意:如果不能查看,看如下帖子处理

   http://www.cnblogs.com/zlslch/p/6604189.html

 (4)操作集群

  (a)在 hdfs 文件系统上创建一个 input 文件夹

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/atguigu/input

  (b)将测试文件内容上传到文件系统上

[atguigu@hadoop101  hadoop-2.7.2]$ bin/hdfs    dfs -put    wcinput/wc.input /user/atguigu/input/

  (c)查看上传的文件是否正确

[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

  (d)运行 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

  (e)查看输出结果

命令行查看:

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*

浏览器查看

这里写图片描述

  (f)将测试文件内容下载到本地

[atguigu@hadoop101  hadoop-2.7.2]$ hadoop  fs  -get    /user/atguigu/output/part-r-00000 ./wcoutput/

  (g)删除输出结果

[atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -rmr /user/atguigu/output

4.2.2 YARN 上运行 MapReduce 程序

 1)分析:

  (1)准备 1 台客户机

  (2)安装 jdk

  (3)配置环境变量

  (4)安装 hadoop

  (5)配置环境变量

  (6)配置集群 yarn 上运行

  (7)启动、测试集群增、删、查

  (8)在 yarn 上执行 wordcount 案例

 2)执行步骤

  (1)配置集群

   (a)配置 yarn-env.sh
 
     配置一下 JAVA_HOME
     export JAVA_HOME=/opt/module/jdk1.8.0_144

   (b)配置 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>

   (c)配置:mapred-env.sh

     配置一下 JAVA_HOME
     export JAVA_HOME=/opt/module/jdk1.8.0_144

   (d)配置: (对 mapred-site.xml.template 重新命名为) mapred-site.xml

[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>

 (2)启动集群

   (a)启动 resourcemanager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager

   (b)启动 nodemanager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager

 (3)集群操作

   (a)yarn 的浏览器页面查看

      http://192.168.1.101:8088/cluster
这里写图片描述

   (b)删除文件系统上的 output 文件【集群操作时输出文件的目录最好让它自动生成,不要提前手动创建】

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output

   (c)执行 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

   (d)查看运行结果

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*

这里写图片描述

4.2.3 配置临时文件存储路径

1)停止进程

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop resourcemanager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh stop datanode

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh stop namenode

2)修改 hadoop.tmp.dir

[core-site.xml]



<!--  指定 hadoop 运行时产生文件的存储目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

3)将/opt/module/hadoop-2.7.2 路径中的 logs 文件夹删除掉

[atguigu@hadoop101 hadoop-2.7.2]$ rm -rf logs/

4)进入到 tmp 目录将 tmp 目录中 hadoop-atguigu 目录删除掉

[atguigu@hadoop101 tmp]$ rm -rf hadoop-atguigu/

5)格式化 NameNode


[atguigu@hadoop101 hadoop-2.7.2]$ hadoop namenode -format

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/yarn-daemon.sh start resourcemanager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager 

7)查看/opt/module/hadoop-2.7.2/data/tmp 这个目录下的内容。

4.2.4 配置文件说明

  Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认

配置值时,才需要修改自定义配置文件,更改相应属性值。

(1)默认配置文件:存放在 hadoop 相应的 jar 包中

  [core-default.xml]

   hadoop-common-2.7.2.jar/ core-default.xml

  [hdfs-default.xml]

   hadoop-hdfs-2.7.2.jar/ hdfs-default.xml

  [yarn-default.xml]

   hadoop-yarn-common-2.7.2.jar/ yarn-default.xml

  [core-default.xml]

   hadoop-mapreduce-client-core-2.7.2.jar/ core-default.xml
(2)自定义配置文件:存放在$HADOOP_HOME/etc/hadoop

   core-site.xml

   hdfs-site.xml

   yarn-site.xml

   mapred-site.xml

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值