zoukankan      html  css  js  c++  java
  • Hadoop 2.7.0模拟分布式实验环境搭建[亲测]

    实验目的:
    本实验通过在PC电脑上同时运行3个虚拟机,一个为master节点,两个slave节点。 
     
    搭建环境
    主机:mac os 10.10
     
    OS:CenOS 6.5
    虚拟机:VMware fusion
     
     
    一、虚拟机配置安装
         本实验采用三台虚拟机作为分布式模拟,因此建立了三台虚拟机。每台虚拟机分别分配1g内存,15G硬盘空间。分别命名为Node1(master192.168.0.1),       Node2(slave192.168.0.2),Node3(slave192.168.0.3
    修改/etc/hosts,添加
    192.168.0.1 Node1
    192.168.0.2 Node2
    192.168.0.3 Node3
         1.虚拟机OS安装
    •      三台虚拟机安装linux(CenOS 6.5)
    •      关闭防火墙、iptables(在root权限下,运行chkconfig iptables off永久关闭防火墙,然后运行service iptables status查看防火墙运行状态)
         2.网络配置
    •      由于在局域网环境进行实验,因此虚拟机的网络适配器选择桥接模式(虚拟机-网络适配器-桥接模式)。
    •      同时选择网络适配器设置(虚拟机-网络适配器-网络适配器设置),选择“连接网络适配器”
    •      静态ip设置:局域网可以自行给每台主机设置静态ip,在网络里选择ipv4为手动模式,进行ip配置。(我分别设置为192.168.0.1/2/3)
         验证:分别在三台主机上打开终端,进行ping其他主机的ip,若都能互相ping通,则设置成功
     
    二、jdk安装
      在oracle官网下载java SE的jdk。下载后解压到主机上,由于jdk安装网上很多,因此不再细讲jdk安装。
      验证:在终端输入java -version后有提示说明安装成功
     
    三.SSH免密码登陆
      由于在互相远程操作的话,我们使用ssh [ip]命令进行ssh登录,需要输入远程主机的密码才能登陆。因此要将ssh设置为免密码登陆。
      在设置的时候要做两方面ssh免密码登陆,一方面是自己登陆到自己(localhost)需要设置,另外一方面是需要将自己到其他各个主机之间都设置为ssh免密码登陆。
      其实ssh免密码登陆的设置,就是将本机的rsa公钥传到远程主机上,将公钥内容放到对方主机的/.ssh文件夹里面的authorized_keys里面,即可实现免密码登陆。
    操作如下:
      首先关闭本机的防火墙及iptables等
      Node1(master)
      A:免密码登陆到其他主机
      1.回到用户主目录(cd ~)
      2.运行ssh-keygen -t rsa,一直回车   (生成rsa 密钥)
      3.进入生成的文件夹.ssh,运行scp id_rsa.pub   username@192.168.0.X:/home/username/.ssh/authorized_keys将pub公钥分别传给其他两个主机
      4.再次运行ssh [ip]则不需要密码登陆。
      B:免密码登陆到本机
      将id_rsa.pub里面的内容加到同目录下的 authorized_keys即可。
     
      同理,将其余两个节点都设置为互相ssh免密码登陆。
     
    [其实不用这么麻烦,可以将其与两个slave和master自己的id_rsa.pub都加到master的authorized_keys里,然后master的这个authorized_keys都复制到其他节点的.ssh/里面就行了]
      验证:在各个主机上,输入[ssh 目标ip]都不用输入密码,直接登录
     
    四、Hadoop配置
      非常重要的来了。中间遇到各种问题,由于查的各种资料不靠谱,搞了一周才把这步搞定。
      1.hadoop下载
        首先,毫无疑问我们得去官网上下载hadoop的包。http://mirror.bit.edu.cn/apache/hadoop/common/
        在界面中,我选择的是2.7.0的版本。选择下载hadoop-2.7.0.tar.gz(当然也能复制下载链接用wget,都一样)
      2.解压hadoop,将其放到用户主目录下,命名为hadoop
      3.配置hadoop文件
        A.配置环境变量
        打开/etc/profile,编辑如下
    #set Java   JAVA环境变量
    export JAVA_HOME=/usr/java

    export JAVA_BIN=/usr/java/bin
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN PATH CLASSPATH
    export JAVA_LIBRARY_PATH=/home/renjie/hadoop/lib/native

    #set Hadoop hadoop环境变量
    export HADOOP_HOME=/home/renjie/hadoop
    export PATH=$PATH:HADOOP_HOME/bin

    立即生效:source /etc/profile

       B.在hadoop目录下,分别建立tmp、dfs、dfs/name、dfs/data文件夹

       C.配置hadoop环境文件

        修改hadoop/etc/hadoop/hadoop-env.sh,取消export JAVA_HOME=/usr/java的注释,并且配置java的绝对路径

        修改hadoop/etc/hadoop/yarn-env.sh,同样将java路径配置为绝对路径

       D.修改hadoop/etc/hadoop/core-site.xml

    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://192.168.0.1:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/renjie/hadoop/tmp</value>
    </property>
    </configuration>

      E.修改hadoop/etc/hadoop/hdfs-site.xml

    <configuration>
    <property>
    <name>dfs.nameservices</name>
    <value>Node1</value>
    </property>
    <property>
    <name>dfs.ha.namenodes.Node1</name>
    <value>Node1</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/renjie/hadoop/dfs/data</value>
    </property><property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>Node1:9001</value>
    </property>
    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    </property>

    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    </configuration>

     

      F.修改hadoop/etc/hadoop/mapred-site.xml

    <configuration>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
    <name>yarn.resourcemanager.address</name>
    <value>192.168.0.1:8032</value>
    </property>
    <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>192.168.0.1:8030</value>
    </property>
    <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>192.168.0.1:8031</value>
    </property>
    <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>192.168.0.1:8033</value>
    </property>
    <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>192.168.0.1:8088</value>
    </property>
    <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>768</value>
    </property></configuration>

      G.修改hadoop/etc/hadoop/slaves

      其中注销掉localhost,添加

      Node2

      Node3

    五、分发hadoop

      将配置好的hadoop分发到其他节点。

      在用户主目录下,scp -r hadoop username@192.168.0.2:/home/username     //将当前目录下的hadoop文件夹传到192.168.0.2的username用户文件夹下。剩下节点也这样操作

    六、初始化

      进入hadoop目录。运行bin/hadoop namenode -format 若最后出现success,则成功初始化

    七、运行hadoop

      在master上,进入hadoop/sbin,运行./start-all.sh,运行hadoop

      这个时候如果hadoop没有配置好的话,可能会进行报错。这一步运行后,提示中不能出现任何错误。我做的时候运行这一步,出现了

    WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... 
    using builtin-java classes where applicable
    这种情况是没有找到本地库。解决方案:http://dl.bintray.com/sequenceiq/sequenceiq-bin/。在这个网站下载对应的版本包。下载后解压,将里面的文件覆盖到hadoop/lib/native/就行。

    最后成功运行后,输入jps。出现此时运行的程序,若出现

    10914 Jps
    9112 ResourceManager
    8862 NameNode

    则master成功

    在slave上,运行jps,若出现

    2326 DataNode
    3423 Jps

    则slave成功。

    至此,hadoop成功运行。接下来可以运行example了

     
  • 相关阅读:
    【codevs1922】骑士共存问题——网络流
    【bzoj1855||hdu3401】股票交易——单调队列优化dp
    【bzoj2002】弹飞绵羊——分块
    【bzoj3790】神奇项链——manacher+贪心
    【hdu2149】Public Sale
    【hdu1846】Brave Game
    【hdu3294】Girls' research——manacher
    【hdu3068】最长回文——manacher算法
    [BZOJ] 1634: [Usaco2007 Jan]Protecting the Flowers 护花
    [BZOJ] 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
  • 原文地址:https://www.cnblogs.com/ren-jie/p/5295242.html
Copyright © 2011-2022 走看看