欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

大数据学习之Hadoop运行模式

程序员文章站 2022-06-18 16:15:12
一、Hadoop运行模式 (1)本地模式(默认模式): 不需要启用单独进程,直接可以运行,测试和开发时使用。 (2)伪分布式模式: 等同于完全分布式,只有一个节点。 (3)完全分布式模式: 多个节点一起运行。 1.1 本地运行Hadoop 案例 1.1.1 官方grep案例 1)创建在hadoop- ......

 

一、hadoop运行模式

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

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

  (2)伪分布式模式:

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

  (3)完全分布式模式:

      多个节点一起运行。

 1.1  本地运行hadoop 案例

    1.1.1 官方grep案例

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

          [root@master hadoop-2.7.6]# mkdir input

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

          [root@master hadoop-2.7.6]# cp etc/hadoop/*.xml input

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

          [root@master hadoop-2.7.6]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar grep input output 'dfs[a-z.]+'

       4)查看输出结果

          [root@master src]# cat output/*

 

    

 1.2 伪分布式运行hadoop案例

     1.2.1 启动hdfs并运行mapreduce程序

       1)分析:

             (1)准备1台客户机

             (2)安装jdk

             (3)配置环境变量

             (4)安装hadoop

             (5)配置环境变量

             (6)配置集群

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

             (8)执行wordcount案例

          2)执行步骤

         需要配置hadoop文件如下

         (1)配置集群

          (a)配置:hadoop-env.sh

            修改java_home 路径:

            export java_home=/usr/java/jdk1.8.0_171-amd64

          (b)配置:core-site.xml

<!-- 指定hdfs中namenode的地址 -->

<property>

       <name>fs.defaultfs</name>

   <value>hdfs://slave1:9000</value>

</property>

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

<property>

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

       <value>/usr/local/src/hadoop-2.7.6/tmp</value>

</property>

          (c)配置:hdfs-site.xml

   

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

       <property>

              <name>dfs.replication</name>

              <value>1</value>

       </property>

       (2)启动集群

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

            bin/hdfs namenode -format

          (b)启动namenode

            sbin/hadoop-daemon.sh start namenode

          (c)启动datanode

            sbin/hadoop-daemon.sh start datanode

       (3)查看集群

        (a)查看是否启动成功

              使用jps命令查看进程

        (b)查看产生的log日志

           当前目录:/usr/local/src/hadoop-2.7.6/logs

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

                         

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

                                   

           (4)操作集群

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

          [root@slave1 hadoop-2.7.6]# bin/hdfs dfs -mkdir -p /user/mapreduce/wordcount/input

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

          [root@slave1 hadoop-2.7.6]# bin/hdfs dfs -put wcinput/wc.input  /user/mapreduce/wordcount/input/

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

          [root@slave1 hadoop-2.7.6]#  bin/hdfs dfs -ls  /user/mapreduce/wordcount/input/

          [root@slave1 hadoop-2.7.6]#  bin/hdfs dfs -cat  /user/mapreduce/wordcount/input/wc.input

        (d)运行mapreduce程序

          [root@slave1 hadoop-2.7.6]#  bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/mapreduce/wordcount/input/                                                /user/mapreduce/wordcount/output

        (e)查看输出结果

          命令行查看:

          [root@slave1 hadoop-2.7.6]#  bin/hdfs dfs -cat /user/atguigu/mapreduce/wordcount/output/*

          也可浏览器查看    

          大数据学习之Hadoop运行模式

 

 

 

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

            [root@slave1 hadoop-2.7.6]#  hadoop fs -get /user/mapreduce/wordcount/output/part-r-00000 ./wcoutput/

         

              (g)删除输出结果

            [root@slave1 hadoop-2.7.6]#  hdfs dfs -rmr /user/mapreduce/wordcount/output

 

    1.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=/usr/java/jdk1.8.0_171-amd64

          (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>hadoop61</value>

</property>

          

(c)配置:mapred-env.sh

       配置一下java_home

  export java_home=/usr/java/jdk1.8.0_171-amd64

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

<!-- 指定mr运行在yarn上 -->

<property>

       <name>mapreduce.framework.name</name>

       <value>yarn</value>

</property>

        

(2)启动集群

(a)启动resourcemanager

sbin/yarn-daemon.sh start resourcemanager

(b)启动nodemanager

sbin/yarn-daemon.sh start nodemanager

(3)集群操作

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

    http://192.168.110.61:8088/cluster

(b)删除文件系统上的output文件

bin/hdfs dfs -rm -r /user/mapreduce/wordcount/output

              (c)执行mapreduce程序

                bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/mapreduce/wordcount/input  /user/mapreduce/wordcount/output

              (d)查看运行结果

bin/hdfs dfs -cat /user/mapreduce/wordcount/output/*

  

 1.3 完全分布式部署hadoop

  1. 分析:

       1)准备3台客户机(关闭防火墙、静态ip、主机名称)

       2)安装jdk

       3)配置环境变量

    4)安装hadoop

       5)配置环境变量

       6)安装ssh

       7)配置集群

       8)启动测试集群

2. 虚拟机准备

    参考https://www.cnblogs.com/singlecodeworld/p/9524369.html

  3.ssh无密码登录

    参考https://www.cnblogs.com/singlecodeworld/p/9547866.html

  4. 配置集群

    1)集群部署规划

  hadoop61 hadoop62 hadoop63

hdfs

namenode

datanode
datanode

secondarynamenode

datanode
yarn nodemanager

resourcemanager

nodemanager
nodemanager

    2)配置文件

      (1)配置core-site.xml

<!-- 指定hdfs中namenode的地址 -->

       <property>

              <name>fs.defaultfs</name>

        <value>hdfs://hadoop61:9000</value>

       </property>

 

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

       <property>

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

              <value>/opt/module/hadoop-2.7.6/tmp</value>

       </property>

 

      (2)hdfs

        配置hadoop-env.sh

export java_home=/usr/java/jdk1.8.0_171-amd64

        配置hdfs-site.xml

<configuration>    

       <property>

              <name>dfs.replication</name>

              <value>3</value>

       </property>

 

       <property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>hadoop63:50090</value>

    </property>

</configuration>

        配置slaves

        [gaokang@hadoop61 hadoop]$ vi slaves

hadoop61

hadoop62

hadoop63

      (3)yarn

          配置yarn-env.sh

           [gaokang@hadoop61 hadoop]$  vi yarn-env.sh

export java_home=/opt/module/jdk1.8.0_144

          配置yarn-site.xml

            [gaokang@hadoop61 hadoop]$ vi yarn-site.xml

<configuration>

 

       <!-- reducer获取数据的方式 -->

       <property>

               <name>yarn.nodemanager.aux-services</name>

               <value>mapreduce_shuffle</value>

       </property>

 

       <!-- 指定yarn的resourcemanager的地址 -->

       <property>

              <name>yarn.resourcemanager.hostname</name>

              <value>hadoop62</value>

       </property>

</configuration>

      (4)mapreduce

          配置mapred-env.sh

          [gaokang@hadoop61 hadoop]$ vi mapred-env.sh

export java_home=/opt/module/jdk1.8.0_144

          配置mapred-site.xml

           [gaokang@hadoop61 hadoop]$ vi mapred-site.xml

<configuration>

       <!-- 指定mr运行在yarn上 -->

       <property>

              <name>mapreduce.framework.name</name>

              <value>yarn</value>

       </property>

</configuration>

      

    3)在集群上分发以上所有文件

        [gaokang@hadoop61 hadoop]$ scp  *   gaokang@hadoop62:/usr/local/src/hadoop-2-7-6/etc/hadoop 

        [gaokang@hadoop61 hadoop]$ scp  *   gaokang@hadoop63:/usr/local/src/hadoop-2-7-6/etc/hadoop 

  5.集群启动及测试

1)启动集群

       (0)如果集群是第一次启动,需要格式化namenode

               [gaokang@hadoop61 hadoop-2.7.6]$ bin/hdfs namenode -format

  (1)启动hdfs:

    [gaokang@hadoop61 hadoop-2.7.6]$ sbin/start-dfs.sh

    //查看启动进程

    [gaokang@hadoop61 hadoop-2.7.6]$ jps

    [gaokang@hadoop62 hadoop-2.7.6]$ jps

    [gaokang@hadoop63 hadoop-2.7.6]$ jps

  (2)启动yarn

    [gaokang@hadoop61 hadoop-2.7.6]$ sbin/start-yarn.sh

    注意:namenode和resourcemanger如果不是同一台机器,不能在namenode上启动 yarn,应该在resoucemanager所在的机器上启动yarn。

2)集群基本测试

  (1)上传文件到集群

    [gaokang@hadoop61 hadoop-2.7.6]$  bin/hdfs dfs -mkdir -p /user/data

    [gaokang@hadoop61 hadoop-2.7.6]$  bin/hdfs dfs -put etc/hadoop/*-site.xml  /user/data  

      (2)上传文件后查看文件存放在什么位置

         进入临时数据目录

        [gaokang@hadoop61 hadoop-2.7.6]$  cd   tmp/dfs/data/current/bp-1951657529-192.168.110.61-1535407736174/current/finalized/subdir0/subdir0

        大数据学习之Hadoop运行模式

 

      (3)拼接,将多个文件拼接成一个文件

        大数据学习之Hadoop运行模式

       

      (4)下载

         [gaokang@hadoop61 hadoop-2.7.6]$  bin/hadoop fs -get   /usr/data/hadoop-2.7.6.tar.gz

 

        

        6、hadoop启动停止方式

      1)各个服务组件逐一启动

             (1)分别启动hdfs组件

                    sbin/hadoop-daemon.sh  start|stop  namenode|datanode|secondarynamenode

             (2)启动yarn

                    sbin/yarn-daemon.sh  start|stop  resourcemanager|nodemanager

      2)各个模块分开启动(配置ssh是前提)常用

             (1)整体启动/停止hdfs

                    sbin/start-dfs.sh

                    sbin/stop-dfs.sh

             (2)整体启动/停止yarn

                    sbin/start-yarn.sh

                    sbin/stop-yarn.sh

      3)全部启动(不建议使用)

             sbin/start-all.sh

             sbin/stop-all.sh