hadoop搭建伪分布式集群-虚拟机

hadoop搭建伪分布式集群-虚拟机

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

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

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

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

  1. Hadoop的守护进程运行在本机机器,模拟一个小规模的集群 
  2. 在一台主机模拟多主机。
  3. Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程。
  4. 在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。
  5. 格式化文件系统

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

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

二、本次搭建环境说明

VMware Fusion
1. ubuntu16.04 64位 ip:172.16.29.11
2. jdk9.0.4
3. hadoop2.8.1

三、安装

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

  在Ubuntu下,软件安装到/opt下,当前正在使用的用户,对于opt目录需要有读写权限: 

  • 将opt的权限给为777(漏洞文件),不推荐在生产环境中使用。但是可以在学习和调试环境中使用。     
  • 该目录的所有者设置为当前用户
> sudo chmod -R 777 /opt
> sudo chown -R yourusername:yourusername /opt

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

  1. 下载jdk9.0.4,并解压,文件夹重命名为jdk,移动jdk至/opt目录下。
  2. 配置环境变量 

vim 打开/etc/profile并编辑:

> sudo vim /etc/profile 

在profile末尾加入如下配置:

export JAVA_HOME=/opt/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

更新配置文件:

> source /etc/profile

查看是否安装成功:

> java
...
> javac
...
> java -version
...

3.3、安装hadoop

解压hadoop安装包到opt目录下:

> sudo  tar -zxvf hadoop-2.8.1.tar.gz -C /opt
> mv /opt/hadoop-2.8.1   /opt/hadoop #重命名

配置环境变量,在/etc/profile文件中加入以下内容:

export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_CLASSPATH=$(hadoop classpath):$HADOOP_CLASSPATH

更新配置文件:

> source /etc/profile

使用hadoop version命令测试是否配置成功(如果成功,会显示hadoop版本号):

> hadoop version

3.4、配置hadoop

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

  1)hadoop-env.sh

    大约在25行左右   

  export JAVA_HOME=${JAVA_HOME}改成export JAVA_HOME=/opt/jdk

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

  2)core-site.xml 

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

分析:172.16.29.11是你主节点所在主机的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:///data/hadoop/hdfs/nn</value>
                </property>
                <property>
                    <name>dfs.namenode.checkpoint.dir</name>
                    <value>file:///data/hadoop/hdfs/snn</value>
                </property>
                <property>
                    <name>dfs.namenode.checkpoint.edits.dir</name>
                    <value>file:///data/hadoop/hdfs/snn</value>
                </property>
                <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:///data/hadoop/hdfs/dn</value>
                </property>
            </configuration>

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

> cp mapred-site.xml.template mapred-site.xml
> vi 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>172.16.29.11</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>

  6)创建相关目录

> sudo mkdir -p /data/hadoop/hdfs/nn
> sudo mkdir -p /data/hadoop/hdfs/dn
> sudo mkdir -p /data/hadoop/hdfs/snn
> sudo mkdir -p /data/hadoop/yarn/nm
> sudo mkdir -p /opt/hadoop/logs

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

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

> hdfs namenode -format

四、启动集群

  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命令查看是否启动成功

> jps
JPS
NameNode
DataNode
NodeManager
JobHistoryServer
ResourceManager

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

    HDFS:http://172.16.29.11:50070
    这里写图片描述
    YARN:http://172.16.29.11: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没有启动成功,请打开hdfs-site.xml,修改dfs.datanode.data.dir 为fs.datanode.data.dir

查看http://172.16.29.11:8088可以看出计算pi值得任务正在执行:
这里写图片描述

五、问题

1.如果启动某服务后,提示没有权限创建某个目录,请手动创建。
2.启动HDFS集群,提示Name node is in safe mode。

解决办法:
这是因为在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。

可以通过以下命令来手动离开安全模式:

hadoop dfsadmin -safemode leave  

用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。

3.执行yarn jar提交作业未成功,查看描述:
这里写图片描述
解决办法:
检查损坏的hdfs文件列表 使用命令可以打印出损坏的文件列表: hadoop fsck
没有冗余备份,只能删除损坏的文件,使用命令: hadoop fsck -delete

> hadoop fsck 
> hadoop fsck -delete

4.如果jps查看某个服务没有启动,请查看hadoop/logs中的对应日志文件。比如NameNode没有启动,打开hadoop-yourusername-namenode-hadoop12.out.log,查看错误信息,(是否创建的文件夹用户及用户组权属问题?是否namenode未格式化问题?)
参考博文:https://www.cnblogs.com/zhangyinhua/p/7647686.html

猜你喜欢

转载自blog.csdn.net/apple9005/article/details/79579771