zoukankan      html  css  js  c++  java
  • hadoop+spark集群搭建

    hadoop+spark集群搭建

     

    本次实验环境:两台hadoop+两台spark组成集群

     

    环境准备:

            1. 两个主机实现ssh无密钥认证,包括本机与本机的免密钥认证:

                    ssh-keygren :生成一对密钥

                    ssh-copy-id : 把公钥发给对方服务器

             2. 集群间需实现时间同步:

                     ntpdate

             3. 配置主机名:              

                     192.168.133.128 master
                     192.168.133.129 node

             4. 下载hadoop-spark压缩包,解压,尽量两台服务器的hadoop-spark安装路径是一致的

       

             5. 配置安装JAVA环境并配置JAVA和hadoop环境变量:

    export JAVA_HOME=/usr/java/jdk1.8.0_51/
    

    export HADOOP_HOME=/opt/hadoop-spark/hadoop/hadoop-2.9.1
    

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

    安装hdoop集群:

     

        在master主机上配置:

            cd $HADOOP_HOME/etc/hadoop/

            vi core-site.xml

    <configuration>
    

    <!--配置HDFS的NameNode-->
    

                <property>
    

                  <name>fs.defaultFS</name>
    

                  <value>hdfs://master:9000</value>
    

                </property>
    

     

                <!--配置DataNode保存数据的位置-->
    

                <property>
    

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

                  <value>/opt/hadoop-spark/hadoop/hadoop-2.9.1/tmp</value>
    

                </property>
    

    </configuration>
    

           

             vi hdfs-site.xml

    <configuration>
    

    <!--配置HDFS的冗余度-->
    

        <property>
    

            <name>dfs.replication</name>
    

        <value>1</value>
    

        </property>
    

    <!--配置是否检查权限-->
    

        <property>
    

        <name>dfs.permissions</name>
    

        <value>false</value>
    

        </property>
    

    <!--配置namenode存储路径-->
    

        <property>
    

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

        <value>file:///data/cluster_hadoop/hdfs/nn</value>
    

        </property>
    

    <!--配置datanode存储路径-->
    

        <property>
    

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

        <value>file:///data/cluster_hadoop/hdfs/dn</value>
    

        </property>
    

    <!--配置second namenode的映像存储路径-->
    

        <property>
    

        <name>fs.checkpoint.dir</name>
    

        <value>file:///data/cluster_hadoop/hdfs/snn</value>
    

        </property>
    

    <!--配置second namenode合并元数据时的临时编辑存储路径-->
    

        <property>
    

        <name>fs.checkpoint.edits.dir</name>
    

        <value>file:///data/cluster_hadoop/hdfs/snn</value>
    

        </property>
    

     

    </configuration>
    

    如果namenode,second namenode, datanode没有设置存储路径,则默认存储到$(hadoop.tmp.dir)路径下

       

              vi yarn-site.xml:

    <configuration>
    

    <!--配置resourcemanager监听地址及端口-->
    

        <property>
    

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

            <value>master:8032</value>
    

        </property>
    

    <!--配置resourcemanager的调度器监听地址及端口,默认0.0.0.0:8030-->
    

        <property>
    

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

            <value>master:8030</value>
    

        </property>
    

        <property>
    

    <!--NodeManager通过该地址向RM汇报心跳,领取任务等,默认0.0.0.0:8031-->
    

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

            <value>master:8031</value>
    

        </property>
    

    <!--管理员的访问ResourceManager的地址端口,默认0.0.0.0:8033-->
    

        <property>
    

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

            <value>master:8033</value>
    

        </property>
    

    <!--配置resourcemanagerweb接口地址及端口,默认0.0.0.0:8088-->
    

        <property>
    

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

            <value>master:8088</value>
    

        </property>
    

        <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.scheduler.class</name>
    

            <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    

        </property>
    

    </configuration>
    

               注意:yarn-site.xml里面的配置指明的是master的地址,没有解析域名的可以用IP

     

    vi mapred-site.xml

    <configuration>
    

    <!--配置MR运行的框架-->
    

            <property>
    

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

                    <value>yarn</value>
    

            </property>
    

    </configuration>
    

    此文件默认没有,但是在该目录下有个模板文件为mapred-site.xml.template,可以复制一份为mapred-site.xml

         

          vi slaves

    master
    

    node
    

            此配置文件用来指明数据节点的,本次使用master服务器既是master节点也是node节点

     

            新建hadoop存储路径:

            mkdir -p /data/cluster_hadoop/hdfs/nn

            mkdir -p /data/cluster_hadoop/hdfs/snn

            mkdir -p /data/cluster_hadoop/hdfs/dn

     

        配置slave节点:

            slave节点的配置与master节点的配置相同,只是启动的服务不同,把以上编辑的文件拷贝到slave节点相同的位置就可以了

            配置存储路径:

            mkdir -p /data/cluster_hadoop/hdfs/nn

            mkdir -p /data/cluster_hadoop/hdfs/snn

            mkdir -p /data/cluster_hadoop/hdfs/dn

     

    格式化hdfs:

            hdfs namenode -format

             其输出结果会有大量的信息,如显示类似'INFO commmon.Storage:Storage dirctory /PATH/TO/NN has been successfully formatted'的结果表示格式化操作已经完成

    启动Hadoop进程:

            (1)分别启动,分别手动启动master的服务以及slave服务;

              主要用到两个脚本:hadoop-daemon.sh和yarn-daemons.sh。

            (2)master自动启动自身的服务以及slave的服务(需要配置master与slave能进行免密钥认证)

             这里用第二种方法:

              ./sbin/start-dfs.sh

              ./sbin/start-yarn.sh

    master会启动进程:

    [root@accur sbin]# jps
    

    23137 ResourceManager
    

    17224 DataNode
    

    23753 NodeManager
    

    20942 NameNode
    

    17518 SecondaryNameNode
    

    slave会启动进程:

    [root@accur sbin]# jps
    

    7089 DataNode
    

    9999 NodeManager
    

    hadoop相关web接口:

    http://master:50070/

    http://master:8088/  #8088端口冲突了会自动+1,或者编辑start-master.sh修改端口

     

    spark集群安装:

             在两台机器上spark环境变量:

                     vi conf/spark-env.sh                 

                              export SPARK_DIST_CLASSPATH=$(/opt/hadoop-spark/hadoop/hadoop-2.9.1/bin/hadoop classpath)
                              export JAVA_HOME=/usr/java/jdk1.8.0_51/
                              export SPARK_MASTER_HOST=master
                              export SPARK_MASTER_IP=master
                              export SPARK_MASTER_PORT=7077
                              export MASTER=spark://master:7077

              

           配置worker节点:

                  vi conf/slaves:

                           master  #此时master也作为slaves节点

                           node

     

           运行master节点:

                ./sbin/start-master.sh

             

           运行worker节点

                ./sbin/start-slave.sh spark://master:7077

     

          测试worker节点能否与master通信:

                 /bin/spark-shell --master  spark://master:7077

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Valid Anagram
    Spiral Matrix II
    Spiral Matrix
    Kth Smallest Element in a BST
    Count Primes
    javascript 判断浏览器
    javascript 数值交换技巧
    EntityFramework 6 分页模式
    JSON.parse 和 JSON.stringify
    CSS z-index
  • 原文地址:https://www.cnblogs.com/hel7512/p/12350583.html
Copyright © 2011-2022 走看看