zoukankan      html  css  js  c++  java
  • hadoop伪分布式安装

    hadoop伪分布式安装笔记

    参考 https://www.cnblogs.com/zhangyinhua/p/7647686.html

    https://blog.csdn.net/javastart/article/details/47187733

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

    1.1、单机模式(独立模式)(Local或Standalone  Mode)

      -默认情况下,Hadoop即处于该模式,用于开发和调式。

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

    1.2、伪分布式模式(Pseudo-Distrubuted Mode)

      -Hadoop的守护进程运行在本机机器,模拟一个小规模的集群 

      -在一台主机模拟多主机。
      -Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程。
      -在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,

        以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。
      -修改3个配置文件:core-site.xml(Hadoop集群的特性,作用于全部进程及客户端)、hdfs-site.xml(配置HDFS集群的工作属性)、mapred-site.xml(配置MapReduce集群的属性)
      -格式化文件系统

    1.3、全分布式集群模式(Full-Distributed Mode)

      -Hadoop的守护进程运行在一个集群上 

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

     

    二、搭建伪分布式集群的前提条件

    环境:在ubuntu17.04

        jdk1.8.0_131

        hadoop 2.8.1

    2.1、能够正常运行的Ubuntu操作系统

      我实验时候把java和hadoop都安装到/usr/local目录下,要保证当前用户对/usr/local目录有读写权限: 

      1)sudo chmod 777 /usr/local/ -R 

        将/usr/local的权限给为777(漏洞文件),不推荐在生产环境中使用。但是可以在学习和调试环境中使用。     

      2)sudo

        在启动Hadoop的各个守护进程的时候,需要使用sudo。
        在管理Hadoop的时候,实际上由不同的用户启动不同集群的守护进程。
        统一使用当前的用户管理所有集群。

      3)该目录的所有者设置为当前用户

    2.2、安装JDK,并配置环境变量

      1)将jdk安装包放在家目录下

      2)解压到/usr/local目录下

        sudo tar zxvf jdk-8u131-linux-x64.tar.gz -C /usr/local

        此时在/opt目录下:会有一个jdk1.8.0_131

      3)创建软链接

        sudo ln -snf /usr/local/jdk1.8.0_131 /usr/local/jdk

        

        注意:创建软连接的目的是为了,我们在做项目的时候,可能会用到不同的jdk版本,这是要换软件的话,只需要修改软链接就可以了。而不用修改配置文件。

      4)配置环境变量   

        局部环境变量:~/.bashrc
        全局环境变量:/etc/profile
        export JAVA_HOME=/usr/local/jdk
        export JRE_HOME=$JAVA_HOME/jre
        export CLASSPATH=.:$JAVA_HOME/lib
        export PATH=$PATH:$JAVA_HOME/bin

        source 相关文件(更新配置文件)

      5)查看是否安装成功

       java、javac、java -version

     

    三、搭建伪分布式集群

    3.1、安装hadoop

      1)解压hadoop安装包到opt目录下

        sudo  tar zxvf hadoop-2.8.1.tar.gz -C /usr/local

      2)创建软链接

        ln -snf /usr/local/hadoop-2.8.1   /usr/local/hadoop  

        

      3)配置环境变量  

        在/etc/profile文件中加入以下内容:
        export HADOOP_HOME=/usr/local/hadoop
        export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
        source /etc/profile

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

        

    3.2、配置hadoop

      

      配置文件存放在/usr/local/hadoop/etc/hadoop中有n多个文件,暂时我们只需要修改的只有5个

      1)hadoop-env.sh

        大约在25行左右   

      export JAVA_HOME=${JAVA_HOME}改成export JAVA_HOME=/usr/local/jdk

        注意:在配置文件中有提示我们怎么设置,我们一般不删除,二回选择注释它的提示。

      2)core-site.xml 设置集群中NameNode结点的URI(包括协议、主机名称、端口号)

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

        

      分析:1.0.0.5是你主节点所在主机的ip,而9000为端口

      3)hdfs-site.xml   

    复制代码
                <configuration>
                    <property>
                        <name>dfs.nameservices</name>
                        <value>hadoop-cluster</value>
                    </property>
                    <property>
                        <name>dfs.namenode.name.dir</name>
                        <value>file:///home/server/data/hadoop/hdfs/nn</value>
                    </property>
                    <property>
                        <name>dfs.namenode.ch
                        eckpoint.dir</name>
                        <value>file:///home/server/data/hadoop/hdfs/snn</value>
                    </property>
                    <property>
                        <name>dfs.namenode.checkpoint.edits.dir</name>
                        <value>file:///home/server/data/hadoop/hdfs/snn</value>
                    </property>
                    <property>
                        <name>dfs.datanode.data.dir</name>
                        <value>file:///home/server/data/hadoop/hdfs/dn</value>
                    </property>
                </configuration>
    复制代码

        

      4)mapred-site.xml  配置 mapreduce.framework.name,MapReduce的运行方式,取值local、classic或yarn其中之一,设置为yarn,为在yarn集群上运行

        在hadoop的相关目录中没有此文件,但是有一个mapred-site.xml.template文件,将该文件复制一份为mapred-site.xml

        cp mapred-site.xml.template mapred-site.xml
                <configuration>
                    <property>
                        <name>mapreduce.framework.name</name>
                        <value>yarn</value>
                    </property>
                </configuration>

        

      5)yarn-site.xml

    复制代码
                <configuration>
                    <!-- 指定ResourceManager的地址-->
                    <property>
                        <name>yarn.resourcemanager.hostname</name>
                        <value>1.0.0.5</value>
                    </property>
                    <!-- 指定reducer获取数据的方式-->
                    <property>
                        <name>yarn.nodemanager.aux-services</name>
                        <value>mapreduce_shuffle</value>
                    </property>
                    <property>
                        <name>yarn.nodemanager.local-dirs</name>
                        <value>file:///data/hadoop/yarn/nm</value>
                    </property>
                </configuration>
    复制代码

        

      7)创建相关目录

            sudo mkdir -p /home/server/data/hadoop/hdfs/nn
            sudo mkdir -p /datahome/server/datahadoop/hdfs/dn
            sudo mkdir -p /home/server/data/hadoop/hdfs/snn
            sudo mkdir -p /home/server/data/hadoop/yarn/nm

       注意:  

        如果使用sudo启动hadoop的相关进程,这几目录的权限可以不用管。
        如果是使用当前的用户启动相关进程,对于opt目录,当前用户得有读写权限,对于/data目录也需要读写权限。

       遇到问题:

          笔者就是在这个目录权限的问题吃el很大得亏。首先为了不使用sudo我将/data目录的权限修改为777,然后进行

          HDFS集群格式化的时候,出现:

            

          这时我在想为什么呢?原来我只是给data目录设置了读写权限,但是没有给它的子目录设置读写权限。所以:    

            chmod -R 777 /home/server/data 递归设置权限

      8)对HDFS集群进行格式化,HDFS集群是用来存储数据的。  

        hdfs namenode -format

    3.3、启动集群

      1)启动HDFS集群      

        hadoop-daemon.sh start namenode 启动主节点
        hadoop-daemon.sh start datanode 启动从节点

        

      2)启动YARN集群

        yarn-daemon.sh start resourcemanager
        yarn-daemon.sh start nodemanager

        

      3)启动作业历史服务器

        mr-jobhistory-daemon.sh start historyserver

        

      4)jps命令查看是否启动成功

        

      5)HDFS和YARN集群都有相对应的WEB监控页面

        HDFS:http://ip:50070

        

        YARN:http://ip:8088

        

      6)HDFS集群的简单操作命令

        hdfs dfs -ls /

        

        hdfs dfs -mkdir -p /user/zyh

        

      7) YARN集群的操作----提交任务/作业

        计算PI值的作业:
        yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 4 100

        

    四、一个问题

    我之前没有注意发现我的yarn的从节点没有启动起来,在执行计算PI值的时候没有成功才看到:

      

    查看日志发现是配置文件:

      在hdfs-site-web.xml中:

        

      查看http://1.0.0.5:50070可以查看从节点是否启动:

        

      在执行上面使用yarn集群来计算pi值得命令:

        

      查看http://1.0.0.5:8088可以看出计算pi值得任务正在执行:

        

      最后成功:

         这里就截图了,电脑卡住了,上图中在web页面可以查看到任务执行成功,终端中会显示执行结果!     

  • 相关阅读:
    第9课
    FreeRTOS 定时器组
    FMC—扩展外部 SDRAM
    FreeRTOS 事件标志组
    第8课
    FreeRTOS 系统时钟节拍和时间管理
    第七课 线性表的顺序存储结构
    手把手教你调试Linux C++ 代码(一步到位包含静态库和动态库调试)
    Windows GUI代码与Windows消息问题调试利器
    谈谈数据挖掘和机器学习
  • 原文地址:https://www.cnblogs.com/kuainiao/p/9386131.html
Copyright © 2011-2022 走看看