分布式计算平台Hadoop

作者: 意识流丶 | 来源:发表于2019-01-30 17:16 被阅读22次

    Hadoop简介

    Hadoop 是Apache基金会下一个开源的分布式计算平台,它以分布式文件系统HDFS和MapReduce算法为核心,为用户提供了系统底层细节透明的分布式基础架构。
    Github地址:https://github.com/apache/hadoop
    官方网站:https://hadoop.apache.org/
    官方文档:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
    中文社区:http://chinahadoop.com/

    Hadoop的两个核心组成:

    1.HDFS:分布式文件系统,存储海量的数据。是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。
    2.MapReduce:并行处理框架,实现任务分解和调度。包含map(映射)和 reduce(归约)过程,负责在 HDFS 上进行计算。

    Hadoop特点

    1.高扩展:能可靠地存储和处理千兆字节的数据,理论上是无限的
    2.低成本:借鉴谷歌,可以通过普通机器组成的服务器群来分发以及处理数据,这些服务器群总计可达数千个
    3.高效率:通过分发数据,Hadoop可以在数据所在的节点上并行地处理他们,这使得处理的非常迅速
    4.可靠性:Hadoop能自动地维护数据的多份副本,并且在任务失败后能自动的重新部署计算任务

    Hadoop用途

    搭建大型数据仓库,PB级数据存储、处理、分析及统计,用于搜索引擎、BI、日志分析及数据挖掘等

    Hadoop生态圈

    Hadoop 已经成长为一个庞大的生态体系,只要和大数据相关的领域,都有 Hadoop 的身影。下图是一个 Hadoop 生态系统的图谱,详细列举了在 Hadoop 这个生态系统中出现的各种数据工具。
    image

    在window中使用Hadoop

    1.Hadoop下载

    推荐通过镜像下载
    下载地址:http://mirrors.shu.edu.cn/apache/hadoop/common/

    image.png
    选择最新的3.2.0,下载tar.gz文件
    image.png

    2.Hadoop安装

    下载完后直接解压

    解压过程中可能遇到的问题

    image.png

    解决方法,在cmd中使用解压命令start winrar x -y hadoop-3.2.0.tar.gz

    解压完成如下:

    image.png
    关键目录说明:

    bin:存放Hadoop的操作命令
    etc:存放Hadoop的配置文件
    sbin:Hadoop的管理命令
    share:包括Hadoop的文档和组件包

    3.配置Hadoop相关的环境变量

    新建系统变量

    变量名:HADOOP_HOME
    变量值:Hadoop解压路径

    image.png
    添加path属性,

    %HADOOP_HOME%\bin%HADOOP_HOME%\sbin添加到path环境变量中

    检验是否安装Hadoop成功

    cmd中输入hadoop version,显示安装的版本号即可

    image.png

    4.Hadoop配置文件的修改

    主要在/etc/hadoop中修改
    4.1.配置默认hdfs的访问端口,主要修改core-site.xml

    9000端口是通过http协议连接Hadoop使用的端口

    <property>
          <name>fs.defaultFS</name>
          <value>hdfs://localhost:9000</value>
    </property>  
    

    修改后core-site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <!-- Put site-specific property overrides in this file. -->
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>  
    </configuration>
    
    4.2.设置复制数为1,即不进行复制。以及加入namenode文件路径以及datanode数据路径。主要修改hdfs-site.xml

    需要先在Hadoop安装目录下新建两个文件夹namenodedatanode,用来做名字节点和数据节点的数据存储,根据自己的所在路径去设置

        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>    
            <name>dfs.namenode.name.dir</name>    
            <value>file:///E:/hadoop/hadoop-3.2.0/namenode</value>    
        </property>    
        <property>    
            <name>dfs.datanode.data.dir</name>    
            <value>file:///E:/hadoop/hadoop-3.2.0/datanode</value>  
        </property>
    

    修改后hdfs-site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <!-- Put site-specific property overrides in this file. -->
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>    
            <name>dfs.namenode.name.dir</name>    
            <value>file:///E:/hadoop/hadoop-3.2.0/namenode</value>    
        </property>    
        <property>    
            <name>dfs.datanode.data.dir</name>    
            <value>file:///E:/hadoop/hadoop-3.2.0/datanode</value>  
        </property>
    </configuration>
    
    4.3.设置mr使用的框架为yarn,主要修改mapred-site.xml
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    

    修改后mapred-site.xml

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <!-- Put site-specific property overrides in this file. -->
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
    4.4.设置yarn使用mr混洗,主要修改yarn-site.xml
        <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>
    

    修改后yarn-site.xml

    <?xml version="1.0"?>
    <configuration>
    <!-- Site specific YARN configuration properties -->
        <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>
    </configuration>
    

    5.启动Hadoop服务

    5.1.格式化 HDFS,在cmd中执行hdfs namenode -format
    前提:在windows中启动需要在bin目录中加入hadoop.dllwinutils.exe

    否则会报异常

    java.io.FileNotFoundException: Could not locate Hadoop executable: 
    E:\hadoop\hadoop-3.2.0\bin\winutils.exe 
    -see https://wiki.apache.org/hadoop/WindowsProblems
    

    获取hadoop.dllwinutils.exe

    Hadoop2.6.0到Hadoop3.0.0版本(如更新了新版本可以使用):
    官方推荐:https://github.com/steveloughran/winutils
    版本最好对应起来,更新到3.0.0版本,在上面直接下载即可,下载完后引入到bin目录

    image.png

    注:由于用的是Hadoop3.2.0版本

    需要在https://github.com/s911415/apache-hadoop-3.1.0-winutils上获取

    格式化成功如下
    image.png
    格式化之后,namenode里会自动生成一个current文件夹,则格式化成功
    image.png
    5.2.在sbin中执行start-all.cmd,可以用命令或者直接双击
    同时启动了如下4个服务:

    Hadoop Namenode
    Hadoop datanode
    YARN Resourc Manager
    YARN Node Manager

    image.png

    可能存在的问题

    5.2.1.其中Hadoop NamenodeYARN Resourc Manager启动会报异常
    java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/server/timelineservice/collector/TimelineCollectorManager
    Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.server.timelineservice.collector.TimelineCollectorManager
    

    原因:缺少timelineservice.jar
    解决方法:
    share\hadoop\yarn\timelineservice\hadoop-yarn-server-timelineservice-3.2.0.jar复制到share\hadoop\yarn\lib文件夹

    5.2.2.hadoop.dll引入错误,或者版本不对应,Hadoop datanodeYARN Node Manager启动会报异常

    java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
    java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$POSIX.stat(Ljava/lang/String;I)Z
    org.apache.hadoop.util.DiskChecker$DiskErrorException: 
    Too many failed volumes - current valid volumes: 0, volumes configured: 1, volumes failed: 1, volume failures tolerated: 0
    

    报的异常是getStat出了问题,也就是说SHELL.WINDOWSfalse了,应该是hadoop.dll的问题

    6.1通过YRAN网站查看Hadoop查看所有节点状态。默认地址为:http://localhost:8088/

    image.png

    6.2文件管理页面默认地址为:http://localhost:9870/

    在3.0.0之前的版本中文件管理的端口是50070,在3.0.0中替换成9870端口

    image.png

    这里需要注意的是操作权限问题

    权限不足会提示Permission denied: user=dr.who, access=WRITE, inode="/":sportsbenpeng:supergroup:drwxr-xr-x

    可以在hdfs-site.xml中过滤权限验证
    <property> 
        <name>dfs.permissions</name> 
        <value>false</value> 
    </property>
    

    需要深入了解Hadoop3.2.0

    可以参考官方文档:https://hadoop.apache.org/docs/r3.2.0/

    相关文章

      网友评论

        本文标题:分布式计算平台Hadoop

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