zoukankan      html  css  js  c++  java
  • hadoop和spark搭建记录

    因玩票需要,使用三台搭建spark(192.168.1.10,192.168.1.11,192.168.1.12),又因spark构建在hadoop之上,那么就需要先搭建hadoop。历经一个两个下午,终于搭建完成,特记录如下。

    准备工作

    1. jdk已经安装。

    2. 文件下载

        http://pan.baidu.com/s/1o6mydYi

      包含scala,hadoop,spark

    3. ssh无密码认证

        三台互相无密码认证步骤:

     第一步,生成rsa公约私钥:

    [root@jw01 .ssh]# ssh-keygen -t rsa
    [root@jw02 .ssh]# ssh-keygen -r rsa
    [root@kt01  .ssh]# ssh-keygen -t rsa
    [root@kt02  .ssh]# ssh-keygen -t rsa
    
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): #回车代表无需密码登陆
    Enter passphrase (empty for no passphrase): #回车
    Enter same passphrase again: #回车
    Your identification has been saved in /root/.ssh/id_rsa. #代表私钥
    Your public key has been saved in /root/.ssh/id_rsa.pub. #代表公钥
    The key fingerprint is:
    04:45:0b:47:10:92:0c:b2:b9:d7:11:5b:49:05:e4:d9 root@jw01

    第二步,将192.168.1.11,192.168.1.12两台生成的公钥id_rsa.pub重命名id_rsa.pub_11,id_rsa.pub_12传送到192.168.1.10的/root/.ssh/目录下,

    然后在192.168.1.10上将所有公钥加到用于认证的公钥文件authorized_keys(若没有该文件,则下面的命令会生成文件)中,命令为:

    cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys

    第三步:将192.168.1.10上的文件分布复制到192.168.1.11,192.168.1.12两台机器的/root/.ssh/目录下

    最后测试,是否可以使用ssh ip地址互相登陆。

    环境准备

    修改主机名

    我们将搭建1个master,2个slave的集群方案。首先修改主机名vi /etc/hostname,在master上修改为master,其中一个slave上修改为slave1,另一个同理。

    配置hosts

    在每台主机上修改host文件

    vi /etc/hosts
    
    192.168.1.10      master
    192.168.1.11      slave1
    192.168.1.12      slave2

    hadoop安装

    1.解压

    tar -zxvf hadoop-2.6.0.tar.gz

    2.修改配置文件

      参考文献【1】所示

    在机器192.168.1.10(master)上进入hadoop配置目录,需要配置有以下7个文件:hadoop-env.shyarn-env.shslavescore-site.xmlhdfs-site.xmlmaprd-site.xmlyarn-site.xml

    1. hadoop-env.sh中配置JAVA_HOME

      # The java implementation to use.
      export JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
    2. yarn-env.sh中配置JAVA_HOME

      # some Java parameters
      export JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
    3. slaves中配置slave节点的ip或者host,

      192.168.1.11
      192.168.1.12
    4. 修改core-site.xml

      <configuration>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://master:9000/</value>
          </property>
          <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/home/spark/workspace/hadoop-2.6.0/tmp</value>
          </property>
      </configuration>
    5. 修改hdfs-site.xml

      <configuration>
          <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>master:9001</value>
          </property>
          <property>
              <name>dfs.namenode.name.dir</name>
              <value>file:/home/spark/workspace/hadoop-2.6.0/dfs/name</value>
          </property>
          <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/home/spark/workspace/hadoop-2.6.0/dfs/data</value>
          </property>
          <property>
              <name>dfs.replication</name>
              <value>3</value>
          </property>
      </configuration>
    6. 修改mapred-site.xml

      <configuration>
          <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
          </property>
      </configuration>
    7. 修改yarn-site.xml

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

    3. 将配置好的hadoop-2.6.0文件夹分发给slave机器192.168.1.11,192.168.1.12

    4. 在192.168.1.10启动

    cd ~/workspace/hadoop-2.6.0     #进入hadoop目录
    bin/hadoop namenode -format     #格式化namenode
    sbin/start-dfs.sh               #启动dfs 
    sbin/start-yarn.sh              #启动yarn

    5.测试

    10机器上

    $ jps  #run on master
    3407 SecondaryNameNode
    3218 NameNode
    3552 ResourceManager
    3910 Jps

    11,12机器上

    $ jps   #run on slaves
    2072 NodeManager
    2213 Jps
    1962 DataNode

    admin端

    在浏览器中输入 http://192.168.1.10:8088 ,应该有 hadoop 的管理界面出来了,并能看到 slave1 和 slave2 节点。端口配置在yarn-site.xml上

        <property>
            <name>yarn.resourcemanager.webapp.address</name>
            <value>master:8088</value>
        </property>

    安装scala

    参考文献[1]

    在三台机器上分别操作:机器192.168.1.10,192.168.1.11,192.168.1.12

    解压

    tar -zxvf scala-2.10.4.tgz

    再次修改环境变量sudo vi /etc/profile,添加以下内容:

    export SCALA_HOME=$WORK_SPACE/scala-2.10.4
    export PATH=$PATH:$SCALA_HOME/bin

    同样的方法使环境变量生效,并验证 scala 是否安装成功

    $ source /etc/profile   #生效环境变量
    $ scala -version        #如果打印出如下版本信息,则说明安装成功
    Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL

    可能遇到的问题解决:

    【1】Hadoop jps出现process information unavailable提示解决办法:参考文献【2】

    启动Hadoop之后,使用jps命令查看当前系统的java进程情况,显示:   

    hduser@jack:/usr/local/hadoop$ jps
    18470 SecondaryNameNode
    19096 Jps
    12167 -- process information unavailable
    19036 NodeManager
    18642 ResourceManager
    18021 DataNode
    17640 NameNode


        这时可以通过进入本地文件系统的/tmp目录下,删除名称为hsperfdata_{username}的文件夹,然后重新启动Hadoop。

    【2】各种权限问题

    解决方式:重做ssh无密码认证的准备工作

     【3】启动Hadoop HDFS时的“Incompatible clusterIDs”错误原因分析 

      解决方式:“Incompatible clusterIDs”的错误原因是在执行“hdfs namenode -format”之前,没有清空DataNode节点的data目录。清空之。

    spark安装

    参考文献【1】所示

    在10机器上解压

    tar -zxvf spark-1.4.0-bin-hadoop2.6.tgz
    mv spark-1.4.0-bin-hadoop2.6 spark-1.4    #原来的文件名太长了,修改下

    修改配置:

    cd ~/workspace/spark-1.4/conf    #进入spark配置目录
    cp spark-env.sh.template spark-env.sh   #从配置模板复制
    vi spark-env.sh     #添加配置内容
    在spark-env.sh末尾添加以下内容(这是我的配置,你可以自行修改):
    export SCALA_HOME=/home/spark/workspace/scala-2.10.4
    export JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
    export HADOOP_HOME=/home/spark/workspace/hadoop-2.6.0
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    SPARK_MASTER_IP=master
    SPARK_LOCAL_DIRS=/home/spark/workspace/spark-1.3.0
    SPARK_DRIVER_MEMORY=1G
    修改slaves文件
    cp slaves.template slaves

      修改配置:

    192.168.1.11

    192.168.1.12

    将上述配置分发给:192.168.1.11,192.168.1.12

    在10上启动:

    sbin/start-all.sh

    检查是否启动:

    master上

    $ jps
    7949 Jps
    7328 SecondaryNameNode
    7805 Master
    7137 NameNode
    7475 ResourceManager

    在slave2

    $jps
    3132 DataNode
    3759 Worker
    3858 Jps
    3231 NodeManager

    进入Spark的Web管理页面: http://192.168.1.10:8080

    如果8080被别的程序占用,使用8081端口。

    参考文献

    【1】http://wuchong.me/blog/2015/04/04/spark-on-yarn-cluster-deploy/

    【2】http://my.oschina.net/zhangjie830621/blog/417252

    【3】http://blog.chinaunix.net/uid-20682147-id-4214553.html

  • 相关阅读:
    RabbitMQ~广播消息
    大数据~说说Hadoop
    大数据~说说ZooKeeper
    RabbitMQ~消费者实时与消息服务器保持通话
    c/c++测试程序运行时间
    7kb的javascript日期操作类库(XDate)
    提前防止Non-PIE错误,检测app是否包含PIE标志
    paip.数据库发邮件通知配置
    CADisplayLink 及定时器的使用
    HDU3415:Max Sum of Max-K-sub-sequence(单调队列)
  • 原文地址:https://www.cnblogs.com/davidwang456/p/5010499.html
Copyright © 2011-2022 走看看