zoukankan      html  css  js  c++  java
  • 【原】Hadoop伪分布模式的安装

    Hadoop伪分布模式的安装

    【环境参数】

    (1)Host OS:Win7 64bit

    (2)IDE:Eclipse Version: Luna Service Release 2 (4.4.2)

    (3)虚拟机:VMware 10

    (4)Client OS:CentOS 6.4 32bit

    注意:

    若是CentOS 64bit,则在启动hadoop时,会报出警告。

    原因:Hadoop的本地库($HADOOP_HOME/lib/native/libhadoop.so.1.0.0)是在32 bit平台编译的,只支持32bit,并不支持64bit的,因此,若在64bit的CentOS上启动就会报出警告,如下所示。

    INFO namenode.NameNode: createNameNode [-format]

    Java HotSpot(TM) Server VM warning: You have loaded library /home/hadoop/app/hadoop-2.4.1/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard.

    The VM will try to fix the stack guard now.

    It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.

    WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

    (5)JDK版本:jdk-7u55-linux-i586.tar

    (6)Hadoop Version:hadoop-2.4.1

    (7)Hadoop集群配置参数

           本集群共三个节点,一个是Namenode节点,剩余两个为Datanode节点。

    7.1)Namenode节点参数

    IP:192.168.234.8

    主机名:namenode01

    7.2)第一个DataNode节点参数

    IP:192.168.234.11

    主机名:datanode01

    7.3)第二个DataNode节点参数

    IP:192.168.234.12

    主机名:datanode02

    (8)本机在NAT连接(VMnet8)方式下,对应虚拟网络中的IP地址:192.168.234.1 
     

    【步骤描述】

    0、安装步骤简述

           Hadoop的伪分布式安装主要概括为以下步骤:

           Linux环境的配置(IP, 主机名,hosts映射),安装配置JDK,安装配置hadoop,配置SSH免登陆等。

    1、准备Linux环境(root用户操作)

    1.1修改适配器设置

    点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.234.255 子网掩码:255.255.255.0 -> apply -> ok

    回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet8(NAT连接方式) -> 属性 -> 双击IPv4 -> 设置windows的IP:192.168.234.1 子网掩码:255.255.255.0 -> 点击确定

           在虚拟软件上 --My Computer -> 选中虚拟机 -> 右键 -> settings -> network adapter -> host only -> ok      

    1.2关闭防火墙

    查看防火墙状态

    # service iptables status

    关闭防火墙

    # service iptables stop

    查看防火墙开机启动状态

    # chkconfig iptables --list

    关闭防火墙开机启动

    # chkconfig iptables off

    1.3修改IP、主机名和hosts文件

    1.3.1修改IP

    两种方式:

    第一种:通过Linux图形界面进行修改(强烈推荐)

           进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.1.101 子网掩码:255.255.255.0 网关:192.168.1.1 -> apply

          

    第二种:修改配置文件方式(屌丝程序猿专用)

           vim /etc/sysconfig/network-scripts/ifcfg-eth0

                        

           DEVICE="eth0"

           BOOTPROTO="static"               ###

           HWADDR="00:0C:29:3C:BF:E7"

           IPV6INIT="yes"

           NM_CONTROLLED="yes"

           ONBOOT="yes"

           TYPE="Ethernet"

           UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"

           IPADDR="192.168.234.8"           ###

           NETMASK="255.255.255.0"          ###

           GATEWAY="192.168.234.255"            ###

          

    1.3.2修改主机名

    (1)编辑/etc/sysconfig/network文件

    # vim /etc/sysconfig/network

                 

    NETWORKING=yes

    HOSTNAME=namenode01    ###

    (2)使用hostname

    # hostname namenode01

    (3)重新登录使得新主机名生效

    # logout

    注意:修改datanode01和datanode02的节点的主机名也是这个步骤。

                 

    1.3.3修改主机名和IP的映射关系

    编辑/etc/hosts文件。

    # vim /etc/hosts                   

    192.168.234.8 namenode01 (Namenode的IP地址与域名的映射)

    192.168.234.11 datanode01 (第一个Datanode的IP地址与域名的映射)

    192.168.234.12 datanode02 (第二个Datanode的IP地址与域名的映射)

    1.4创建hadoop用户、用户组以及赋予权限

    (1)创建用户和组

    创建hadoop用户组hadoopGroup

    # groupadd hadoopGroup

    创建hadoop用户,并为其指定用户组,用户家目录

    # useradd hadoop -g hadoopGroup -d /home/hadoop

    (2)为hadoop用户赋予sudo权限

    编辑“/etc/sudoers”文件,添加相关命令。

    Allow root to run any commands anywhere

    root    ALL=(ALL)   ALL

    hadoop  ALL=(ALL)   ALL

    1.4重启Linux

    # shutdown -h now

    2、安装JDK

    2.1在【SecureSRT】中,按下“alt+p”后出现sftp窗口,然后put d:xxxyylljdk-7u_65-i585.tar.gz

          

    2.2解压jdk

    创建文件夹

    # mkdir /home/hadoop/app

    解压

    # tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/app

                 

    2.3将java添加到环境变量中

    # vim /etc/profile

    在文件最后添加

    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_55

    export PATH=$PATH:$JAVA_HOME/bin

          

    刷新配置

    # source /etc/profile

                 

    3、安装hadoop2.4.1(hadoop用户操作)

    注意01:在安装之前,要确保每台机器上都安装了JDK,配置了环境变量等。

    注意02:将用户切换到hadoop用户。

    注意03:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop伪分布式安装需要修改5个配置文件。

    3.1配置hadoop(仅仅在单一节点配置,hadoop-server01)

    第一个:hadoop-env.sh

           vim hadoop-env.sh

           #第27行

           export JAVA_HOME=/usr/java/jdk1.7.0_65

    注意:原来的配置为“export JAVA_HOME=${ JAVA_HOME }”       ,是灵活的,在此要将其写死,因为原配置中,Hadoop可能会无法识别JAVA_HOME这个环境变量。

    第二个:core-site.xml

    core-site.xml

           该文件中配置了Hadoop运行时的一些“公共的参数”。

    <configuration>

    <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->

           <property>

                  <name>fs.defaultFS</name>

           <!--  配置namenode  -->

                  <value>hdfs://namenode01:9000</value>

           </property>

           <!-- 指定hadoop运行时产生文件的存储目录 -->

           <property>

                  <name>hadoop.tmp.dir</name>

                  <value>/home/hadoop/app/hadoop-2.4.1/tmp</value>

        </property>

    </configuration>

    解释1:

    hdfs://namenode01:9000”是一个URI,就像mysql的URI一样“jdbc:mysql://host:3306/db?if..”。

    其中:

    hdfs://”和“jdbc:mysql://”这两个开头都是一个“Schema”,“hdfs://”是Hadoop的协议。

    解释2:

    “hdfs://namenode01:9000”,Schema后边的部分为“namenode的地址(或者域名、主机名)和端口号”。

    namenode01:为Namenode节点主机的主机名。

    解释3:

    “hadoop.tmp.dir”为hadoop的工作目录。Hadoop运行过程中产生的中间目录都放置在该文件夹下。

    具体的参数配置,请参考:

    http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml

                 

    第三个:hdfs-site.xml 

    <!-- 指定HDFS副本的数量 -->

    <property>

           <name>dfs.replication</name>

           <value>1</value>

    </property>

    hdfs-site.xml:具体规定hadoop工作的一些细节。

    dfs.replication:指定HDFS副本的数量。

                 

    第四个:mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)

    $ mv mapred-site.xml.template mapred-site.xml

    $ vim mapred-site.xml

    <!-- 指定mr运行在yarn上 -->

    <property>

           <name>mapreduce.framework.name</name>

           <value>yarn</value>

    </property>

                 

    第五个:yarn-site.xml

    <!-- 指定YARN的老大(ResourceManager)的地址 -->

    <property>

           <name>yarn.resourcemanager.hostname</name>

           <value>namenode01</value>

    </property>

    <!-- reducer获取数据的方式 -->

    <property>

           <name>yarn.nodemanager.aux-services</name>

           <value>mapreduce_shuffle</value>

    </property>

    解释:

    (1) “yarn.nodemanager.aux-services”:规定一些“从节点”的行为。

    第六个:配置” etc/hadoop/slave”文件

    作用:决定Hadoop在启动时,是否自动去启动从节点“datanode”。 

    $ vim slaves

    输入下列内容

    namenode01

    datanode01

    datanode02

    (1)将从节点“datanode”的信息写入到该文件中。

    因为上边五个xml文件配置的都是namenode,或者yarn或者resourceManager等相关的信息,并没有配置与“从节点datanode”相关的信息,因此,在slaves中需要配置相关从节点的信息。

    (2) 该文件不是必须配置的。

           若配置该文件,则在Hadoop启动的时候,可以Hadoop会自动启动“从节点datanode”,若没有配置,则可以通过手工的形式启动“从节点”。

    3.2将hadoop添加到环境变量      

    # vim /etc/proflie

    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_55

    export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1      

    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    # source /etc/profile

    3.3远程拷贝:将已经配置完的单一节点的Hadoop配置拷贝到另外两台节点中

    (1)已配置好的节点:

    namenode01

    (2)未配置的节点:

    datanode01

    datanode02

    (3)目标:

    将“namenode01”节点中已经配置好的Hadoop文件(/home/hadoop/app/hadoop-2.4.1)拷贝到节点“datanode01”和节点“datanode02”所对应的目录下。

    (4)命令

    [hadoop@ namenode01 app]$ pwd

    /home/hadoop/app/hadoop-2.4.1

    [hadoop@ namenode01 app]$ ls

    hadoop-2.4.1

    [hadoop@ namenode01 hadoop]$

    scp -r hadoop-2.4.1/ hadoop@datanode01:/home/hadoop/app 

    命令解析:

    ①scp:“Secure Copy”,一般用于“远程拷贝”。

    ②“hadoop@ datanode01”:表示拷贝到“datanode01”这台主机中的“hadoop用户”下目录“/home/hadoop/app”中去。

    若没有“hadoop”这个字符串,则表示将文件拷贝到其他节点上的与“当前执行命令的用户名”相同的那个用户目录下。

    拷贝之前注意:

    注意01在执行远程拷贝之前,在远程机器上,必须确保已经完成了初步的环境配置:

    配置完IP,hostname,IP与域名的映射文件,hadoop用户和用户组,hadoop用户密码等,hadoop用户主目录的权限。

    注意02若主拷贝方节点与目标拷贝方节点上的两个用户之间的权限不一样,则无法完成系统拷贝。。

    注意03若另一台节点中没有“app”目录,则要先创建该目录,再执行远程拷贝。

          

    3.4格式化namenode(是对namenode进行初始化)

    切换到目录:$HADOOP_HOME/bin中,使用其中的命令“hdfs”。

    注意:在使用能够分布式文件系统(即启动hadoop)之前,一定能够要先格式化。

    # hdfs namenode -format

          

    若出现下述命令,则说明hadoop文件系统的格式化已经成功了。

    15/03/20 13:07:38 INFO common.Storage: Storage directory /app/ha             doop-2.4.1/tmp/dfs/name has been successfully formatted.

    15/03/20 13:07:39 INFO namenode.NNStorageRetentionManager: Going to              retain 1 images with txid >= 0

    15/03/20 13:07:39 INFO util.ExitUtil: Exiting with status 0

    15/03/20 13:07:39 INFO namenode.NameNode: SHUTDOWN_MSG:

    /************************************************************

    SHUTDOWN_MSG: Shutting down NameNode at namenode01/192.168.234.8

    ************************************************************/

    所谓格式化也就是在用户自己创建的“$HADOOP/tmp”目录下,写入一些初始的元数据文件。格式化完毕后,会在$HADOOP_HOME/tmp/current目录下,生成HDFS的相关数据文件,如下所示。

    [hadoop@namenode01 current]$ pwd

    /home/hadoop/app/hadoop-2.4.1/tmp/dfs/name/current

    [hadoop@namenode01 current]$ ls

    edits_0000000000000000001-0000000000000000002

    edits_0000000000000000003-0000000000000000005

    fsimage_0000000000000000018

    fsimage_0000000000000000018.md5

    fsimage_0000000000000000020

    fsimage_0000000000000000020.md5

    seen_txid

    VERSION

    3.5启动hadoop

    注意:在使用能够分布式文件系统之前,一定能够要先格式化。

    先启动HDFS

    sbin/start-dfs.sh             

    再启动YARN

    sbin/start-yarn.sh

                 

    或者也可以通过如下Web界面来确认HDFS是否启动成功:

    若没有启动“start-dfs.sh”,则该界面是不能够成功启动的。

    http://192.168.234.8:50070 (HDFS管理界面,显示NameNode信息)

    http:// 192.168.234.8:8088 (MR管理界面)

    3.6验证是否启动成功

    使用jps命令验证

    27408 NameNode

    28218 Jps

    27643 SecondaryNameNode

    28066 NodeManager

    27803 ResourceManager (这个进程代表YARN,是一个分布式的资源管理系统)

    27512 DataNode                 

    4、配置ssh免登陆

    4.1 生成ssh免登陆密钥

    进入到我的home目录

    cd ~/.ssh 

    ssh-keygen -t rsa (四个回车)

    执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

    4.2拷贝公钥

    将公钥拷贝到要免密登陆的目标机器上和本机上。

    ①ssh-copy-id datanode01

    ②ssh-copy-id datanode02

    ③ssh-copy-id namenode01

    注意:千万不能忘了将密钥拷贝到“本机”上,在此,本机的主机名为:namenode01,否则,该配置将不会成功。

  • 相关阅读:
    TXNLP 01-09
    王某的NLP之路前言
    回归模型(一) 线性回归
    回归模型(三) 岭回归
    回归模型(二) 逻辑回归
    hadoop中的JournalNode
    systemctl详解
    HADOOP HA 报错
    集成学习的不二法门bagging、boosting和三大法宝<结合策略>平均法,投票法和学习法(stacking)
    阿里云集群搭建
  • 原文地址:https://www.cnblogs.com/zjrodger/p/4939400.html
Copyright © 2011-2022 走看看