热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据学习02_Hadoop:Hadoop运行模式

大数据学习02_Hadoop:Hadoop运行模式Hadoop运行模式本地模式运行模式例子1:gerp案例例子2:WordCount案例伪分布式运行模式启动HDFS并运行MapRe


大数据学习02_Hadoop: Hadoop运行模式

  • Hadoop运行模式
    • 本地模式运行模式
      • 例子1:gerp案例
      • 例子2: WordCount案例
    • 伪分布式运行模式
      • 启动HDFS并运行MapReduce程序
      • 启动YARN并运行MapReduce程序
    • 历史服务器
      • 配置历史服务器
      • 配置日志的聚集
    • 完全分布式运行模式
      • 虚拟机集群分发脚本
      • 集群配置
      • 集群单点启动
      • SSH无密登录配置
      • 群起集群
      • 启动集群


Hadoop运行模式

Hadoop运行模式包括: 本地模式,伪分布式模式完全分布式模式
Hadoop官方网站: http://hadoop.apache.org/


本地模式运行模式


例子1:gerp案例


  1. 在hadoop-2.7.2目录下面创建一个input/文件夹

    mkdir input

  2. 将Hadoop的xml配置文件复制到input/

    cp etc/hadoop/*.xml input

  3. 执行share目录下的MapReduce程序

    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'

  4. 查看输出结果

    cat output/*


例子2: WordCount案例


  1. 在hadoop-2.7.2目录下面创建一个wcinput/文件夹

    mkdir wcinput

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

    cd wcinput
    touch wc.input

  3. 编辑wc.input文件,在文件中输入如下内容

    hadoop yarn
    hadoop mapreduce
    atguigu
    atguigu

  4. 回到Hadoop根目录/opt/module/hadoop-2.7.2
  5. 执行程序

    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput

  6. 查看结果

    cat wcoutput/part-r-00000atguigu 2
    hadoop 2
    mapreduce 1
    yarn 1


伪分布式运行模式


启动HDFS并运行MapReduce程序


  1. 配置集群:

    1. etc/hadoop/hadoop-env.sh中将${JAVA_HOME}改为其绝对路径
      (可以使用echo ${JAVA_HOME}获得其绝对路径)
      在这里插入图片描述

    2. 配置etc/hadoop/core-site.xml,在根节点下添加下列节点:


      <property><name>fs.defaultFSname><value>hdfs://hadoop100:9000value>
      property>
      <property><name>hadoop.tmp.dirname><value>/opt/module/hadoop-2.7.7/data/tmpvalue>
      property>

    3. 配置etc/hadoop/hdfs-site.xml,在根节点下添加下列节点:


      <property><name>dfs.replicationname><value>1value>
      property>

  2. 启动集群

    1. 格式化NameNode

      bin/hdfs namenode -format

    2. 启动NameNode

      sbin/hadoop-daemon.sh start namenode

    3. 启动DataNode

      sbin/hadoop-daemon.sh start datanode

  3. 查看集群

    1. 查看是否启动成功

      jps13586 NameNode
      13668 DataNode
      13786 Jps

      jps是JDK中的命令,不是Linux命令.不安装JDK不能使用jps.

    2. web端查看HDFS文件系统:
      在浏览器中打开http://hadoop101:50070查看HDFS文件系统

  4. 操作集群

    1. HDFS文件系统上创建一个input/文件夹

      hdfs dfs -mkdir -p /user/atguigu/input

    2. 将测试文件内容上传到文件系统上

      hdfs dfs -put wcinput/wc.input /user/atguigu/input/

    3. 查看上传的文件是否正确

      hdfs dfs -ls /user/atguigu/input/
      hdfs dfs -cat /user/atguigu/ input/wc.input

    4. 运行MapReduce程序

      hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/atguigu/input/ /user/atguigu/output

    5. 查看输出结果
      命令行查看:

      bin/hdfs dfs -cat /user/atguigu/output/part-r-00000
      浏览器查看:在这里插入图片描述

    6. 将测试文件内容下载到本地

      hdfs dfs -get /user/atguigu/output/part-r-00000 ./wcoutput/


启动YARN并运行MapReduce程序


  1. 配置集群

    1. etc/hadoop/yarn-env.sh,添加JDK的绝对路径:

      export JAVA_HOME&#61;/opt/module/jdk1.8.0_201

    2. 配置etc/hadoop/yarn-site.xml,在根节点下添加下列节点:


      <property><name>yarn.nodemanager.aux-servicesname><value>mapreduce_shufflevalue>
      property>
      <property><name>yarn.resourcemanager.hostnamename><value>hadoop100value>
      property>

    3. etc/hadoop/mapred-env.sh,添加JDK的绝对路径:

      export JAVA_HOME&#61;/opt/module/jdk1.8.0_201

    4. etc/hadoop/mapred-site.xml.template重新命名为etc/hadoop/mapred-site.xml并在根节点下添加如下节点:


      <property><name>mapreduce.framework.namename><value>yarnvalue>
      property>

  2. 启动集群

    1. 先启动NameNodeDataNode
    2. 启动ResourceManager:

      yarn-daemon.sh start resourcemanager

    3. 启动NodeManager

      yarn-daemon.sh start nodemanager

  3. 集群操作

    1. 查看是否启动成功

      jps4289 Jps
      3014 NameNode
      4183 NodeManager
      3933 ResourceManager
      3117 DataNode

    2. web端查看YARN集群的浏览器页面查看:
      在浏览器中打开http://hadoop101:8088/cluster查看YARN集群
    3. 删除文件系统上的output文件

      bin/hdfs dfs -rm -r /user/atguigu/output

    4. 执行MapReduce程序

      hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/atguigu/input /user/atguigu/output

    5. 查看运行结果

      hdfs dfs -cat /user/atguigu/output/part-r-00000


历史服务器


配置历史服务器

为了查看程序的历史运行情况,需要配置历史服务器. 具体配置步骤如下&#xff1a;


  1. 配置etc/hadoop/mapred-site.xml,在其根节点下添加如下节点


    <property><name>mapreduce.jobhistory.addressname><value>hadoop101:10020value>
    property>
    <property><name>mapreduce.jobhistory.webapp.addressname><value>hadoop101:19888value>
    property>

    1. 启动历史服务器

    mr-jobhistory-daemon.sh start historyserver

    1. 查看历史服务器是否启动

    jps4997 JobHistoryServer
    3014 NameNode
    4183 NodeManager
    5050 Jps
    3933 ResourceManager
    3117 DataNode

    1. web端查看JobHistory:
      在浏览器中打开http://hadoop100:19888/jobhistory查看JobHistory

配置日志的聚集

日志聚集概念: 应用运行完成以后,将程序运行日志信息上传到HDFS系统
日志聚集功能好处: 可以方便的查看到程序运行详情,方便开发调试


开启日志聚集功能,需要重新启动NodeManager, ResourceManager, HistoryManager



  1. 配置etc/hadoop/yarn-site.xml,在根节点下添加如下节点


    <property><name>yarn.log-aggregation-enablename><value>truevalue>
    property>
    <property><name>yarn.log-aggregation.retain-secondsname><value>604800value>
    property>

  2. 重新启动NodeManager, ResourceManager, HistoryManager

    # 关闭NodeManager, ResourceManager, HistoryManager
    yarn-daemon.sh stop resourcemanager
    yarn-daemon.sh stop nodemanager
    mr-jobhistory-daemon.sh stop historyserver# 启动NodeManager, ResourceManager, HistoryManager
    yarn-daemon.sh start resourcemanager
    yarn-daemon.sh start nodemanager
    mr-jobhistory-daemon.sh start historyserver

  3. 再运行MapReduce程序可以在http://hadoop100:19888/jobhistory查看JobHistory

完全分布式运行模式


虚拟机集群分发脚本

虚拟机集群分发脚本xsync,内容如下

#!/bin/bash
#1 获取输入参数个数&#xff0c;如果没有参数&#xff0c;直接退出
pcount&#61;$#
if((pcount&#61;&#61;0)); thenecho no args;exit;
fi#2 获取文件名称
p1&#61;$1
fname&#61;&#96;basename $p1&#96;
echo fname&#61;$fname#3 获取上级目录到绝对路径
pdir&#61;&#96;cd -P $(dirname $p1); pwd&#96;
echo pdir&#61;$pdir#4 获取当前用户名称
user&#61;&#96;whoami&#96;#5 循环
for((host&#61;102; host<105; host&#43;&#43;)); doecho ------------------- hadoop$host --------------rsync -rvl $pdir/$fname $user&#64;hadoop$host:$pdir
done

将脚本放在/usr/local/sbin目录下.


集群配置


  1. 集群部署规划

     hadoop102hadoop103hadoop104
    HDFSNameNode
    DataNode
    DataNodeSecondaryName
    NodeDataNode
    YARNNodeManagerResourceManager
    NodeManager
    NodeManager
  2. 配置集群

    1. 核心配置文件:etc/hadoop/core-site.xml


      <property><name>fs.defaultFSname><value>hdfs://hadoop102:9000value>
      property>

      <property><name>hadoop.tmp.dirname><value>/opt/module/hadoop-2.7.7/data/tmpvalue>
      property>

    2. HDFS配置文件:
      1. 配置etc/hadoop/hadoop-env.sh

        # 指定JAVA路径
        export JAVA_HOME&#61;/opt/module/jdk1.8.0_201

      2. 配置etc/hadoop/hdfs-site.xml


        <property><name>dfs.namenode.secondary.http-addressname><value>hadoop104:50090value>
        property>

    3. YARN配置文件
      1. 配置etc/hadoop/yarn-env.sh

        # 指定JAVA路径
        export JAVA_HOME&#61;/opt/module/jdk1.8.0_201

      2. 配置etc/hadoop/yarn-site.xml


        <property><name>yarn.nodemanager.aux-servicesname><value>mapreduce_shufflevalue>
        property>
        <property><name>yarn.resourcemanager.hostnamename><value>hadoop103value>
        property>

    4. MapReduce配置文件
      1. 配置etc/hadoop/mapred-env.sh

        # 指定JAVA路径
        export JAVA_HOME&#61;/opt/module/jdk1.8.0_201

      2. 配置etc/hadoop/mapred-site.xml


        <property><name>mapreduce.framework.namename><value>yarnvalue>
        property>

  3. 在集群上分发配置好的Hadoop配置文件

    xsync /opt/module/hadoop-2.7.7/

  4. 查看文件分发情况

    cat /opt/module/hadoop-2.7.7/etc/hadoop/core-site.xml


集群单点启动


  1. 如果集群是第一次启动,需要格式化NameNode. 如果集群曾经被启动过,要删除data/logs/目录

    rm -rf data/ logs/
    hadoop namenode -format

  2. hadoop102上启动NameNode

    hadoop-daemon.sh start namenode
    jps

  3. hadoop102, hadoop103, hadoop104上分别启动DataNode

    hadoop-daemon.sh start datanode
    jps


SSH无密登录配置


  1. SSH登录的密钥存储在~/.ssh目录下.
    其中id_rsa文件存储私钥,id_rsa.pub文件存储公钥.

  2. 生成密钥的命令如下:

    ssh-keygen -t rsa

  3. 公钥拷贝到要免密登录的目标机器命令如下:

    ssh-copy-id hadoop102
    ssh-copy-id hadoop103
    ssh-copy-id hadoop104


群起集群


  1. etc/hadoop/slaves文件中配置slaves,增加如下内容

    hadoop102
    hadoop103
    hadoop104

    注意: 该文件中添加的内容结尾不允许有空格,文件中不允许有空行.
    slaves中要包含节点自身

  2. 同步所有节点配置文件

    xsync slaves


启动集群


  1. 如果集群是第一次启动,需要格式化NameNode

    hdfs namenode -format

  2. 启动HDFS: 启动所有slavesNameNodeDataNode

    start-dfs.sh

  3. 启动YARN: 启动所有slavesResourceMangerNodeManger

    start-yarn.sh

    要在ResouceManager所在的机器上启动YARN


推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
author-avatar
寒江大哥_599
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有