• Hadoop2.7.3+Hbase-1.2.6+spark2.1.2完全分布式安装部署


    https://www.cnblogs.com/lzxlfly/p/7221890.html

     总的下载地址:      http://mirror.bit.edu.cn/apache/

    hadoop下载地址:http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.5/hadoop-2.7.5.tar.gz

    hbase下载地址:  http://mirror.bit.edu.cn/apache/hbase/1.2.6/hbase-1.2.6-bin.tar.gz

    spark下载地址:   http://mirror.bit.edu.cn/apache/spark/spark-2.1.2/spark-2.1.2-bin-hadoop2.7.tgz

    官方文档:  http://hadoop.apache.org/docs/r2.7.3/  

    Hadoop安装部署基本步骤:

    1、安装jdk,配置环境变量。

           jdk可以去网上自行下载,环境变量如下:

           编辑  vim  /etc/profile 文件,添加如下内容:

           export JAVA_HOME=/opt/java_environment/jdk1.7.0_80(填写自己的jdk安装路径)
           export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
           export PATH=$PATH:$JAVA_HOME/bin

           输入命令,source /etc/profile  使配置生效

          分别输入命令,java 、 javac 、 java -version,查看jdk环境变量是否配置成功

    2、linux环境下,至少需要3台机子,一台作为master,2台(以上)作为slave。

        这里我以3台机器为例,linux用的是CentOS  6.5  x64为机器。

             master 192.168.172.71
             slave1 192.168.172.72
             slave2 192.168.172.73

    3、配置所有机器的hostname和hosts(注意hostname不能带下划_线)。

             (1)更改hostname,可以编辑 vim /etc/sysconfig/network    

         更改master的HOSTNAME,这里改为HOSTNAME=master

         其它slave为HOSTNAME=slave1、HOSTNAME=slave2 ,重启后生效。

         或者直接输:  hostname   名字,更改成功,这种方式无需重启即可生效,

         但是重启系统后更改的名字会失效,仍是原来的名字

       (2)更改host,可以编辑 vim /etc/hosts,增加如下内容:

           192.168.172.71    master 
                192.168.172.72    slave1 
                  192.168.172.73     slave2 

                hosts可以和hostname不一致 ,这里为了好记就写一致了。

    4、配置SSH所有机器之间免密码登录

      (1)CentOS默认没有启动ssh无密登录,编辑 vim  /etc/ssh/sshd_config,

          去掉以下两行注释,开启Authentication免登陆。

          #RSAAuthentication yes
               #PubkeyAuthentication yes

               如果是root用户下进行操作,还要去掉 #PermitRootLogin yes注释,允许root用户登录。

      (2)输入命令,ssh-keygen -t rsa,生成key,一直按回车,

          就会在/root/.ssh生成:authorized_keys   id_rsa.pub   id_rsa 三个文件,

         这里要说的是,为了各个机器之间的免登陆,在每一台机器上都要进行此操作。

      (3) 接下来,在master服务器,合并公钥到authorized_keys文件,

         进入/root/.ssh目录,输入以下命令

              cat id_rsa.pub>> authorized_keys    把master公钥合并到authorized_keys 中

           ssh root@192.168.172.72 cat ~/.ssh/id_rsa.pub>> authorized_keys    

           ssh root@192.168.172.73 cat ~/.ssh/id_rsa.pub>> authorized_keys    

           把slave1、slave2公钥合并到authorized_keys 中

                    完成之后输入命令,把authorized_keys远程copy到slave1和slave2之中

          scp authorized_keys 192.168.172.72:/root/.ssh/  

             scp authorized_keys 192.168.172.73:/root/.ssh/

          最好在每台机器上进行chmod 600  authorized_keys操作,

           使当前用户具有 authorized_keys的读写权限。

          拷贝完成后,在每台机器上进行 service sshd restart  操作, 重新启动ssh服务。

          之后在每台机器输入 ssh 192.168.172.xx,测试能否无需输入密码连接另外两台机器。

            免密简单方法:(只需要在主上执行,即 只要主能通信所有机器)

                    su -c "ssh-keygen -t rsa -N ''" root

                    ssh-copy-id -i /root/.ssh/id_rsa.pub master

                    ssh-copy-id -i /root/.ssh/id_rsa.pub slave1

                    ssh-copy-id -i /root/.ssh/id_rsa.pub slave2

    5、配置Hadoop环境变量,HADOOP_HOME、hadoop-env.sh、yarn-env.sh。

      (1)配置HADOOP_HOME,编辑  vim  /etc/profile 文件,添加如下内容:

         export HADOOP_HOME=/opt/hbase/hadoop-2.7.3 (Hadoop的安装路径)

         export PATH=$PATH:$HADOOP_HOME/sbin

         export PATH=$PATH:$HADOOP_HOME/bin 

         (以下两行最好加上,若没有启动Hadoop、hbase时都会有没加载lib成功的警告)    

         export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
         export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

      (2)配置hadoop-env.sh、yarn-env.sh,在Hadoop安装目录下

         编辑  vim etc/hadoop/hadoop-env.sh  

          加入export JAVA_HOME=/opt/java_environment/jdk1.7.0_80(jdk安装路径)

         编辑  vim etc/hadoop/yarn-env.sh  

          加入export JAVA_HOME=/opt/java_environment/jdk1.7.0_80(jdk安装路径)

         保存退出

    6、配置基本相关xml,core-site.xml、hdfs-site.xml、mapred-site.xml、mapred-site.xml

      创建相关目录

        cd /opt/hadoop-2.7.5 

        mkdir tmp dfs dfs/data dfs/name

      (1)配置core-site.xml,在Hadoop安装目录下 编辑  vim etc/hadoop/core-site.xml

        

    <configuration>
        <property> 
            <name>fs.defaultFS</name> <!--NameNode 的URI-->
            <value>hdfs://master:9000</value> 
        </property> 
        <property> 
            <name>hadoop.tmp.dir</name> <!--hadoop临时文件的存放目录-->
            <value>/opt/hbase/hadoop-2.7.3/tmp</value> 
        </property>
      <property> <!--权限控制开关、需要权限控制开启-->
        <name>hadoop.security.authorization</name
          <value>flase</value
      </property>
    <property> <name>io.file.buffer.size</name> <value>131702</value> </property> </configuration>

      (2)配置hdfs-site.xml,在Hadoop安装目录下 编辑  vim etc/hadoop/hdfs-site.xml

        

    <configuration>
        <property> <!--namenode持久存储名字空间及事务日志的本地文件系统路径--> 
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop/dfs/name</value>
        </property>
        <property> <!--DataNode存放块数据的本地文件系统路径--> 
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop/dfs/data</value>
        </property>
        <property> <!--数据需要备份的数量,不能大于集群的机器数量(即datanode的数量),默认为3,我们有2个datanode,所以副本数设置为1-->
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>master:9001</value>
        </property>
        <property> <!--设置为true,可以在浏览器中IP+port查看--> 
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
        </property>
    </configuration>

    (3)配置mapred-site.xml,在Hadoop安装目录下 编辑  vim etc/hadoop/mapred-site.xml

    <configuration>
        <property>  <!--mapreduce运用了yarn框架,设置name为yarn-->
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property> <!--历史服务器,查看Mapreduce作业记录-->
            <name>mapreduce.jobhistory.address</name>
            <value>master:10020</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>master:19888</value>
        </property>
    </configuration>

    (4)配置yarn-site.xml,在Hadoop安装目录下 编辑  vim etc/hadoop/yarn-site.xml

      

    <configuration>
        <property> <!--NodeManager上运行的附属服务,用于运行mapreduce--> 
            <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> <!--ResourceManager 对客户端暴露的地址-->
            <name>yarn.resourcemanager.address</name>
            <value>master:8032</value>
        </property>
        <property> <!--ResourceManager 对ApplicationMaster暴露的地址-->
            <name>yarn.resourcemanager.scheduler.address</name>
            <value>master:8030</value>
        </property>
        <property> <!--ResourceManager 对NodeManager暴露的地址-->
            <name>yarn.resourcemanager.resource-tracker.address</name>
            <value>master:8031</value>
        </property>
        <property>  <!--ResourceManager 对管理员暴露的地址-->
            <name>yarn.resourcemanager.admin.address</name>
            <value>master:8033</value>
        </property>
        <property>  <!--ResourceManager 对外web暴露的地址,可在浏览器查看--> 
            <name>yarn.resourcemanager.webapp.address</name>
            <value>master:8088</value>
        </property>
        <property>  <!-- 至少1024-->
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>1024</value>
        </property>
    </configuration>

    7、配置slaves文件

      在Hadoop安装目录下,编辑vim etc/hadoop/slaves,

      去除默认的localhost,

          加入

          slave1

          slave2

          保存退出。

    8、通过远程复制命令scp,将配置好的Hadoop复制到各个节点对应位置

      同步hadoop、jdk和env.sh到slave1和slave2

                 rsync -avPz /opt/hadoop-2.7.5 slave1:/opt/

                 rsync -avPz /opt/hadoop-2.7.5 slave2:/opt/

                 rsync -avPz /opt/jdk1.7.0_80 slave1:/opt/

         rsync -avPz /opt/jdk1.7.0_80 slave2:/opt/

                 rsync -avPz /etc/profile.d/env.sh slave1:/etc/profile.d/

                 rsync -avPz /etc/profile.d/env.sh slave2:/etc/profile.d/

                 slave1和slave2 执行 . /etc/profile

            env.sh内容(env.sh里包含了JAVA_HOME HADOOP_HOME)  

    export JAVA_HOME=/opt/jdk1.7.0_80
    export JAVA_BIN=/opt/jdk1.7.0_80/bin
    export JRE_HOME=/opt/jdk1.7.0_80/jre
    export CLASSPATH=/opt/jdk1.7.0_80/jre/lib:/opt/jdk1.7.0_80/lib:/opt/jdk1.7.0_80/jre/lib/charsets.jar
    
    export HADOOP_HOME=/opt/hadoop-2.7.3 
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
    export PATH=$PATH:/opt/jdk1.7.0_80/bin:/opt/jdk1.7.0_80/jre/bin:$HADOOP_HOME/sbin

    9、Hadoop的启动与停止

      (1)在Master服务器启动hadoop,从节点会自动启动,进入Hadoop目录下,

          输入命令,bin/hdfs namenode -format进行hdfs格式化

          输入命令,sbin/start-all.sh,进行启动

          也可以分开启动,sbin/start-dfs.sh、sbin/start-yarn.sh

          在master 上输入命令:jps, 看到ResourceManager、

          NameNode、SecondaryNameNode进程

             在slave 上输入命令:jps, 看到DataNode、NodeManager进程

          出现这5个进程就表示Hadoop启动成功。

    sbin/start-dfs.sh启动 NameNode SecondaryNameNode DataNode 

    sbin/start-yarn.sh 启动 ResourceManager NodeManager

      (2)接下来配置本地hosts,编辑 C:WindowsSystem32driversetc的hosts文件,加入

          192.168.172.71   master

          192.168.172.72   slave1

          192.168.172.73   slave2

         在浏览器中输入http://master:50070查看master状态,

         输入http://master:8088查看集群状态

      (3)停止hadoop,进入Hadoop目录下,输入命令:sbin/stop-all.sh,

          即可停止master和slave的Hadoop进程

    10、测试hadoop

    以下操作在master上实现
    cd /usr/local/hadoop
    建立测试目录   bin/hdfs dfs -mkdir /123
    如果提示 copyFromLocal: Cannot create directory /123/. Name node is in safe mode.
    这是因为开启了安全模式,解决办法
    bin/hdfs dfsadmin -safemode leave
    将当前目录下的LICENSE.txt复制到hadopp中  
    bin/hdfs dfs -copyFromLocal ./LICENSE.txt  /123
    查看/123/下有哪些文件  bin/hdfs dfs -ls /123
    用wordcount分析LICENSE.txt  bin/hadoop  jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /123/LICENSE.txt /output/123
    bin/hdfs dfs -ls /output/123  查看分析后的文件
    bin/hdfs dfs -cat /output/123/part-r-00000  查看分析结果

    Hbase安装部署基本步骤:

      1、在Hadoop配置的基础上,配置环境变量HBASE_HOME、hbase-env.sh

        编辑 vim /etc/profile  加入 

          export  HBASE_HOME=/opt/hbase-1.2.6 

             export  PATH=$HBASE_HOME/bin:$PATH

        编辑vim /opt/hbase-1.2.6/conf/hbase-env.sh  加入

          export JAVA_HOME=/opt/java_environment/jdk1.7.0_80(jdk安装路径)

        去掉注释 # export  HBASE_MANAGES_ZK=true,使用hbase自带zookeeper。

        2、配置hbase-site.xml文件 

    <configuration>
    
        <property> 
            <name>hbase.rootdir</name> <!-- hbase存放数据目录 -->
            <value>hdfs://master:9000/opt/hbase-1.2.6/hbase_db</value>
    
            <!-- 端口要和Hadoop的fs.defaultFS端口一致-->
        </property> 
        <property> 
            <name>hbase.cluster.distributed</name> <!-- 是否分布式部署 -->
            <value>true</value> 
        </property> 
        <property> 
            <name>hbase.zookeeper.quorum</name> <!-- list of  zookooper -->
            <value>master,slave1,slave2</value> 
        </property>     
    
        <property><!--zookooper配置、日志等的存储位置 -->
            <name>hbase.zookeeper.property.dataDir</name> 
            <value>/opt/hbase-1.2.6/zookeeper</value>
        </property>
    
    </configuration>

      3、配置regionservers

        编辑 vim /opt/hbase-1.2.6/conf/regionservers   去掉默认的localhost,
         加入slave1、slave2,保存退出 

         然后把在master上配置好的hbase,通过远程复制命令

        rsync -avPz /etc/profile.d/env.sh slave1:/etc/profile.d/

        rsync -avPz /etc/profile.d/env.sh slave2:/etc/profile.d/

        env.sh内容

    export JAVA_HOME=/opt/jdk1.7.0_80
    export JAVA_BIN=/opt/jdk1.7.0_80/bin
    export JRE_HOME=/opt/jdk1.7.0_80/jre
    export CLASSPATH=/opt/jdk1.7.0_80/jre/lib:/opt/jdk1.7.0_80/lib:/opt/jdk1.7.0_80/jre/lib/charsets.jar
    
    export HADOOP_HOME=/opt/hadoop-2.7.5 
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
    
    export  HBASE_HOME=/opt/hbase-1.2.6
    
    
    
    export PATH=$PATH:/opt/jdk1.7.0_80/bin:/opt/jdk1.7.0_80/jre/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin

          rsync -avPz  /opt/hbase-1.2.6  slave1:/opt/ 

        rsync -avPz  /opt/hbase-1.2.6  slave1:/opt/ 

        3台都执行 . /etc/profile

         复制到slave1、slave2对应的位置

      4、启动与停止Hbase

         (1)在Hadoop已经启动成功的基础上,输入start-hbase.sh,过几秒钟便启动完成,

          输入jps命令查看进程是否启动成功,若 master上出现HMaster、HQuormPeer,

          slave上出现HRegionServer、HQuorumPeer,就是启动成功了。

          (2)输入hbase shell 命令 进入hbase命令模式

              输入status命令可以看到如下内容,1个master,2 servers,3机器全部成功启动。

              1 active master, 0 backup masters, 2 servers, 0 dead, 2.0000 average load

        (3)接下来配置本地hosts,(前边配置过的无需再配置了)

           编辑 C:WindowsSystem32driversetc的hosts文件,加入

            192.168.172.71   master

            192.168.172.72   slave1

            192.168.172.73   slave2

          在浏览器中输入http://master:16010就可以在界面上看到hbase的配置了

        (4)当要停止hbase时输入stop-hbase.sh,过几秒后hbase就会被停止了。

    Spark2.1.2完全分布式环境搭建

      以下操作都在Master节点进行。

      1)下载二进制包spark-2.1.2-bin-hadoop2.7.tgz

      2)解压并移动到相应目录,命令如下:

      tar -zxvf spark-2.1.2-bin-hadoop2.7.tgz

      mv spark-2.1.2-bin-hadoop2.7 /opt

      3)修改相应的配置文件。

      修改/etc/profie,增加如下内容:

    export SPARK_HOME=/opt/spark-2.1.2-bin-hadoop2.7/
    export PATH=$PATH:$SPARK_HOME/bin

      

      复制spark-env.sh.template成spark-env.sh

      cp spark-env.sh.template spark-env.sh

      修改$SPARK_HOME/conf/spark-env.sh,添加如下内容:

    复制代码
    export JAVA_HOME=/opt/jdk1.7.0_80
    export SCALA_HOME=/usr/share/scala
    export HADOOP_HOME=/opt/hadoop-2.7.5
    export HADOOP_CONF_DIR=/opt/hadoop-2.7.5/etc/hadoop
    export SPARK_MASTER_IP=master
    export SPARK_MASTER_HOST=master
    export SPARK_LOCAL_IP=master
    export SPARK_WORKER_MEMORY=1g
    export SPARK_WORKER_CORES=2
    export SPARK_HOME=/opt/spark-2.1.2-bin-hadoop2.7
    export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.7.5/bin/hadoop classpath)
    复制代码

      复制slaves.template成slaves

      cp slaves.template slaves

      修改$SPARK_HOME/conf/slaves,添加如下内容:

    master
    slave1
    slave2

      4)将配置好的spark文件复制到Slave1和Slave2节点。

      rsync -avPz /opt/spark-2.1.2-bin-hadoop2.7 root@slave1:/opt

          rsync -avPz  /opt/spark-2.1.2-bin-hadoop2.7 root@slave2:/opt

      5)修改Slave1和Slave2配置。

      在Slave1和Slave2上分别修改/etc/profile.d/env.sh,增加Spark的配置,过程同Master一样。

      # rsync -avPz /etc/profile.d/env.sh slave1:/etc/profile.d/

      # rsync -avPz /etc/profile.d/env.sh slave2:/etc/profile.d/  3台都执行 . /etc/profile

           env.sh内容

    export JAVA_HOME=/opt/jdk1.7.0_80
    export JAVA_BIN=/opt/jdk1.7.0_80/bin
    export JRE_HOME=/opt/jdk1.7.0_80/jre
    export CLASSPATH=/opt/jdk1.7.0_80/jre/lib:/opt/jdk1.7.0_80/lib:/opt/jdk1.7.0_80/jre/lib/charsets.jar
    
    export HADOOP_HOME=/opt/hadoop-2.7.5 
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
    
    export  HBASE_HOME=/opt/hbase-1.2.6
    
    export SPARK_HOME=/opt/spark-2.1.2-bin-hadoop2.7/
    
    export PATH=$PATH:/opt/jdk1.7.0_80/bin:/opt/jdk1.7.0_80/jre/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$SPARK_HOME/bin

      在Slave1和Slave2修改$SPARK_HOME/conf/spark-env.sh,将export SPARK_LOCAL_IP=master改成slave1和slave2对应节点的IP。

      6)在Master节点启动集群。

      /opt/spark-2.1.2-bin-hadoop2.7/sbin/start-all.sh

      7)查看集群是否启动成功:

      jps

      Master在Hadoop的基础上新增了:

      Master

      

      Slave在Hadoop的基础上新增了:

      Worker

      访问: master:8080

  • 相关阅读:
    [DP] Rod-cutting problem
    Dynamic Programming (DP) 问题总结
    [CC150] 八皇后问题
    [cc150] 硬币问题
    [cc150] 括号问题
    [CC150] Get all permutations of a string
    让Eclipse使用新版本的JRE
    Java中的数组问题
    慎用递归!
    cocos2d-x 添加背景音乐和音效-SimpleAudioEngine
  • 原文地址:https://www.cnblogs.com/hanxiaohui/p/8515810.html
Copyright © 2020-2023  润新知