zoukankan      html  css  js  c++  java
  • 基于Hadoop单机模式/伪分布式模式/完全分布式模式搭建集群

    一、Hadoop的三种运行模式(启动模式)

    一.单机(非分布式)模式

      这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。

    • 默认情况下,Hadoop即处于该模式,用于开发和调式。
    • 不对配置文件进行修改。
    • 使用本地文件系统,而不是分布式文件系统。
    • Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。
    • 用于对MapReduce程序的逻辑进行调试,确保程序的正确。

    二.伪分布式运行模式

      这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点: (NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode)

      请注意分布式运行中的这几个结点的区别:

    1. 从分布式存储的角度来说,集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。
    2. 从分布式应用的角度来说,集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。一个机器上,既当namenode,又当datanode,或者说既 是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。、
    • Hadoop的守护进程运行在本机机器,模拟一个小规模的集群。
    • 在一台主机模拟多主机。
    • Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程。
    • 在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。
    • 修改3个配置文件:core-site.xml(Hadoop集群的特性,作用于全部进程及客户端)、hdfs-site.xml(配置HDFS集群的工作属性)、mapred-site.xml(配置MapReduce集群的属性)
    • 格式化文件系统

    三.完全分布式模式

      真正的分布式,由3个及以上的实体机或者虚拟机组件的机群。

    • Hadoop的守护进程运行在一个集群上。
    • Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。
    • 在所有的主机上安装JDK和Hadoop,组成相互连通的网络。
    • 在主机间设置SSH免密码登录,把各从节点生成的公钥添加到主节点的信任列表。
    • 修改3个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定NameNode和JobTraker的位置和端口,设置文件的副本等参数。
    • 格式化文件系统

    二、搭建Hadoop伪分布式集群

    一.安装JDK,并配置环境变量

    JAVA_HOME = C:ProgramDataJavajdk1.8.0_211

    Path = %JAVA_HOME%in

    二.安装hadoop

    1)解压hadoop安装包

    2)添加Hadoop环境变量(HADOOP_HOME、Path)

    3)使用hadoop version命令测试是否配置成功

    三.配置hadoop

    1)在Hadoop安装路径(C:ProgramDatahadoop-2.7.2)下创建workplace目录,创建temp、nodename和datanode目录,用来保存数据

    2)修改C:ProgramDatahadoop-2.7.2etchadoop下5个配置文件

    • hadoop-env.sh
    export JAVA_HOME=${JAVA_HOME}
    改为:
    export JAVA_HOME=C:ProgramDataJavajdk1.8.0_211
    • core-site.xml(localhost为主节点所在主机的ip,而9000为端口)
        <property>
            <name>hadoop.tmp.dir</name>
            <value>C:ProgramDatahadoop-2.7.2workplace	emp</value>
        </property>  
        <property>
            <name>dfs.name.dir</name>
            <value>C:ProgramDatahadoop-2.7.2workplace
    amenode</value>
        </property>  
        <property>
            <name>fs.default.name</name>
            <value>hdfs://localhost:9000</value>
        </property>  
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
    • hdfs-site.xml
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>    
            <name>dfs.data.dir</name>    
            <value>C:ProgramDatahadoop-2.7.2workplacedatanode</value>    
        </property>
        <property>    
            <name>dfs.namenode.name.dir</name>    
            <value>C:ProgramDatahadoop-2.7.2workplace
    amenode</value>    
        </property>    
        <property>    
            <name>dfs.datanode.data.dir</name>    
            <value>C:ProgramDatahadoop-2.7.2workplacedatanode</value>  
        </property>
    </configuration>
    • mapred-site.xml
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <name>mapred.job.tracker</name>
            <value>hdfs://localhost:9001</value>
        </property>
    </configuration>
    • yarn-site.xml
    <configuration>
        <!-- 指定reducer获取数据的方式-->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
            <name>yarn.scheduler.minimum-allocation-mb</name>
            <value>1024</value>
        </property>
        <property>
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>4096</value>
        </property>
        <property>
            <name>yarn.nodemanager.resource.cpu-vcores</name>
            <value>2</value>
        </property>
    </configuration>

     3)启动Hadoop集群

    1、格式化Hdfs

    cd C:ProgramDatahadoop-2.7.2in
    C:ProgramDatahadoop-2.7.2in>hdfs namenode -format(hadoop namenode -format)

    2、进入Hadoop sbin目录,启动start-all.cmd(结束命令stop-all.cmd),输入jps查看java进程

    cd C:ProgramDatahadoop-2.7.2sbin
    C:ProgramDatahadoop-2.7.2sbin>start-all.cmd
    C:ProgramDatahadoop-2.7.2sbin>jps

    同时,会跳出4个窗口

    问题:Diagnostics: Failed to setup local dir C:ProgramDatahadoop-2.7.2workplace	emp
    m-local-dir, which was marked as good.
    解决:文件权限问题,用管理员模式运行cmd即可解决

    3、WEB UI浏览 
    HDFS和YARN ResourceManager各自提供了Web接口,通过这些接口可查看HDFS集群和YARN集群的状态信息

    Web方式查看文件系统 http://localhost:50070/ 

    四、测试Hadoop集群

    1)测试文件上传下载功能

    cd C:ProgramDatahadoop-2.7.2in
    # 创建目录Demo
    C:ProgramDatahadoop-2.7.2in>hdfs dfs -mkdir /Demo
    # 查看创建情况
    C:ProgramDatahadoop-2.7.2in>hdfs dfs -ls /

    # 上传文件
    C:ProgramDatahadoop-2.7.2in>hdfs dfs -put C:ProjectsHelloWorldHelloWorld.py /Demo
    # 查看
    C:ProgramDatahadoop-2.7.2in>hdfs dfs -ls /Demo

    # 下载文件
    C:ProgramDatahadoop-2.7.2in>hdfs dfs -get /Demo/HelloWorld.py C:Projects

    2)Yarn集群的操作-提交任务/作业-计算PI值(自带)

    yarn jar C:ProgramDatahadoop-2.7.2sharehadoopmapreducehadoop-mapreduce-examples-2.7.2.jar pi 4 100
    问题: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /user/15101/QuasiMonteCarlo_1563868759312_1960410989/in. Name node is in safe mode.
    解决:没有关闭安全模式,直接强制离开安全模式即可
    hdfs dfsadmin -safemode leave 

    3)Hadoop集群的操作-提交任务/作业-Wordcount(自带)

    1、创建word.txt

    2、上传word.txt到Hdfs

    hadoop fs -put C:ProjectsWordCountword.txt /Demo/word.txt

    3、进到mapreduce,运行wordcount

    hadoop jar C:ProgramDatahadoop-2.7.2sharehadoopmapreducehadoop-mapreduce-examples-2.7.2.jar wordcount Demo output

    4、查看词频统计结果

    # 查看整个文件目录
    hadoop fs -ls /
    # 查看Demo目录下结构
    hadoop fs -ls /output
    # 查看output内容
    hadoop fs -cat /output/part-r-00000

    4)Browsing HDFS(http://localhost:50070/explorer.html# --> Utilities --> Browse the file system)

    可以下载分布式文件系统上的word.txt 

  • 相关阅读:
    C#运行Javascript脚本Utility
    SQL Mail XPs Options
    TSQL AVG Functions
    eclipse编译时过滤SVN版本控制信息方法(转)
    追MM与设计模式
    android的性能调优
    对象的赋值和复制(转)
    SVN Working Copy xxx locked and cleanup failed
    HTTP协议详解(转)
    atoi和itoa函数的实现
  • 原文地址:https://www.cnblogs.com/YSPXIZHEN/p/11230291.html
Copyright © 2011-2022 走看看