zoukankan      html  css  js  c++  java
  • hadoop学习之hadoop完全分布式集群安装

    REF:http://blog.csdn.NET/ab198604/article/details/8250461;http://www.tuicool.com/articles/aIzUV3

     

    1.       所用平台和软件

    主机:WIN7 内存16G

    VirtualBox 5.1

    Ubuntu 16.04 LTS

    Hadoop 2.5.2

    Java 1.8

     

    2.       虚拟机安装问题

    2.1          虚拟机复制

    准备三个虚拟机节点。按照hadoop集群的基本要求,其中一个是master结点,主要是用于运行hadoop程序中的namenode、secondorynamenode和jobtracker任务。用外两个结点均为slave结点,其中一个是用于冗余目的,如果没有冗余,就不能称之为hadoop了,所以模拟hadoop集群至少要有3个结点。slave结点主要将运行hadoop程序中的datanode和tasktracker任务。

    cmd

    E:/program files/vm

     

    在准备好这3个结点之后,需要分别将linux系统的主机名重命名(因为前面是复制和粘帖操作产生另两上结点,此时这3个结点的主机名是一样的),重命名主机名的方法(修改后重启生效):

    sudo gedit /etc/hostname

     

    对三个结点的ubuntu系统主机分别命名为:master, node1, node2

    通过ifconfig命令更改结点的物理IP地址

    sudo ifconfig eth1 10.150.1.202

     

    将每个结点的IP地址设置完成后,就可以配置hosts文件了,hosts文件路径为;/etc/hosts,我的hosts文件配置如下,大家可以参考自己的IP地址以及相应的主机名完成配置

     

    3.       建立Hadoop运行账号

    即为hadoop集群专门设置一个用户组及用户,这部分比较简单,参考示例如下:

    sudo groupadd hadoop    //设置hadoop用户组

    sudo useradd –s /bin/bash –d /home/zhm –m zhm –g hadoop –G admin   //添加一个zhm用户,此用户属于hadoop用户组,且具有admin权限。

    sudo passwd zhm   //设置用户zhm登录密码

    su zhm   //切换到zhm用户中

     

    述3个虚机结点均需要进行以上步骤来完成hadoop运行帐号的建立。

     

    4.       配置ssh免密码连入

    SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。

    (1)          每个结点分别产生公私密钥

     

    以上命令是产生公私密钥,产生目录在用户主目录下的.ssh目录中,如下:

     

    Id_dsa.pub为公钥,id_dsa为私钥,紧接着将公钥文件复制成authorized_keys文件,这个步骤是必须的,过程如下:

     

    用上述同样的方法在剩下的两个结点中如法炮制即可。

    (2)     单机回环ssh免密码登录测试

    即在单机结点上用ssh进行登录,看能否登录成功。登录成功后注销退出,过程如下:

     

    注意标红圈的指示,有以上信息表示操作成功,单点回环SSH登录及注销成功,这将为后续跨子结点SSH远程免密码登录作好准备。

    用上述同样的方法在剩下的两个结点中如法炮制即可。

    (3)     让主结点(master)能通过SSH免密码登录两个子结点(slave)

    为了实现这个功能,两个slave结点的公钥文件中必须要包含主结点的公钥信息,这样

    当master就可以顺利安全地访问这两个slave结点了。操作过程如下:

     

    如上过程显示了node1结点通过scp命令远程登录master结点,并复制master的公钥文件到当前的目录下,这一过程需要密码验证。接着,将master结点的公钥文件追加至authorized_keys文件中,通过这步操作,如果不出问题,master结点就可以通过ssh远程免密码连接node1结点了。在master结点中操作如下:

     

    由上图可以看出,node1结点首次连接时需要,“YES”确认连接,这意味着master结点连接node1结点时需要人工询问,无法自动连接,输入yes后成功接入,紧接着注销退出至master结点。要实现ssh免密码连接至其它结点,还差一步,只需要再执行一遍ssh node1,如果没有要求你输入”yes”,就算成功了,过程如下:

     

    如上图所示,master已经可以通过ssh免密码登录至node1结点了。

     

    对node2结点也可以用同样的方法进行,如下图:

    Node2结点复制master结点中的公钥文件

     

    Master通过ssh免密码登录至node2结点测试:

    第一次登录时:

     

    第二次登录时:

     

    表面上看,这两个结点的ssh免密码登录已经配置成功,但是我们还需要对主结点master也要进行上面的同样工作,这一步有点让人困惑,但是这是有原因的,具体原因现在也说不太好,据说是真实物理结点时需要做这项工作,因为jobtracker有可能会分布在其它结点上,jobtracker有不存在master结点上的可能性。

     

    对master自身进行ssh免密码登录测试工作:

     

     

    至此,SSH免密码登录已经配置成功。

     

    5.       配置Java, Hadoop环境

    将java和hadoop的JDK解压安装在~/tools/jdk1.8目录中,接着配置JAVA_HOME宏变量及hadoop路径,这是为了方便后面操作,这部分配置过程主要通过修改bash.bashrc文件来完成.

    sudo gedit /etc/bash.bashrc

    source gedit /etc/bash.bashrc  使配置生效

     

    下面开始修改hadoop的配置文件了,即各种site文件,文件存放在/hadoop/conf下,主要配置core-site.xml、hdfs-site.xml、mapred-site.xml这三个文件。

    Core-site.xml

    <configuration>

            <property>

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

                     <value>/home/hadoop/tmp</value>

                     <description>Abase for other temporary directories.</description>

            </property>

            <property>

                     <name>fs.defaultFS</name>

                     <value>hdfs://10.0.1.100:9000</value>

            </property>

            <property>

                     <name>io.file.buffer.size</name>

                     <value>4096</value>

            </property>

    </configuration>

     

    hdfs-site.xml

    <configuration>

            <property>

                     <name>dfs.nameservices</name>

                     <value>hadoop-cluster1</value>

            </property>

            <property>

                     <name>dfs.namenode.secondary.http-address</name>

                     <value>10.0.1.100:50090</value>

            </property>

            <property>

                     <name>dfs.namenode.name.dir</name>

                     <value>file:///home/hadoop/dfs/name</value>

            </property>

            <property>

                     <name>dfs.datanode.data.dir</name>

                     <value>file:///home/hadoop/dfs/data</value>

            </property>

            <property>

                     <name>dfs.replication</name>

                     <value>2</value>

            </property>

            <property>

                     <name>dfs.webhdfs.enabled</name>

                     <value>true</value>

            </property>

    </configuration>

     

    mapred-site.xml

    <configuration>

            <property>

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

                     <value>yarn</value>

            </property>

            <property>

                     <name>mapreduce.jobtracker.http.address</name>

                     <value>10.0.1.100:50030</value>

            </property>

            <property>

                     <name>mapreduce.jobhistory.address</name>

                     <value>10.0.1.100:10020</value>

            </property>

            <property>

                     <name>mapreduce.jobhistory.webapp.address</name>

                     <value>10.0.1.100:19888</value>

            </property>

    </configuration>

     

    yarn-site.xml

    <configuration>

    <!-- Site specific YARN configuration properties -->

            <property>

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

                     <value>mapreduce_shuffle</value>

            </property>

            <property>

                     <name>yarn.resourcemanager.address</name>

                     <value>10.0.1.100:8032</value>

            </property>

            <property>

                     <name>yarn.resourcemanager.scheduler.address</name>

                     <value>10.0.1.100:8030</value>

            </property>

            <property>

                     <name>yarn.resourcemanager.resource-tracker.address</name>

                     <value>10.0.1.100:8031</value>

            </property>

            <property>

                     <name>yarn.resourcemanager.admin.address</name>

                     <value>10.0.1.100:8033</value>

            </property>

            <property>

                     <name>yarn.resourcemanager.webapp.address</name>

                     <value>10.0.1.100:8088</value>

            </property>

    </configuration>

     

    Slaves

    写下节点slave的IP

    10.0.1.201

    10.0.1.202

     

    hadoop-env.sh

    export  JAVA_HOME =/usr/local/java/jdk/jdk1.6.0_23 

     

    yarn-env.sh

    export  JAVA_HOME =/usr/local/java/jdk/jdk1.6.0_23 

     

    6.       格式化文件系统(在hadoop安装路径下)

    bin/hdfs namenode -format

     

    7.       启动和停止服务

    sbin/start-dfs.sh
    sbin/stop-dfs.sh

    sbin/stop-yarn.sh

     

    8.       查看启动的进程

    Jps

     

    9.       通过浏览器访问

    http://10.0.1.100:50070/

    http://10.0.1.100:8088/

     

     

     

     

  • 相关阅读:
    Python staticmethod() 函数
    Python open() 函数
    Python input() 函数
    Python divmod() 函数
    Python abs() 函数
    instanceof和类型转换
    多态
    方法重写
    this
    Super详解
  • 原文地址:https://www.cnblogs.com/lonelydreamer/p/6143815.html
Copyright © 2011-2022 走看看