hadoop徹底分佈式安裝

概述

  一主兩從(centos7)java

    10.10.0.100 master (namenode)node

    10.10.0.101 slave1  (datanode)mysql

    10.10.0.102 slave2  (datanode)linux

  真機(win7)web

    10.10.0.1sql

1、安裝vmware

 一、設置網絡shell

  (1)、設置虛擬機連接方式爲NAT方式,NAT設置子網爲:10.10.0.0,子網掩碼爲:255.255.255.0,網關爲:10.10.0.254數據庫

  (2)、真機VMnet8(真機和虛擬機NAT鏈接的專用網卡)網卡的ip地址爲10.10.0.1,子網掩碼爲:255.255.255.0,網關爲:10.10.0.254apache

 二、建立虛擬機centos64安裝centos7(純淨,之後實驗備用)vim

2、master的安裝與設置

  一、完整克隆出master

  二、關閉防火牆:systemctl stop firewalld (臨時關閉)systemctl disable firewalld(永久關閉)

  三、設置ip:vi /etc/sysconfig/network-scripts/ifcfg-ens33

    BOOTPROTO=static(靜態IP)

    ONBOOT=yes(開機啓動)

    IPADDR=10.10.0.100(IP地址)

    GATEWAY=10.10.0.254(網關)

    NETMASK=255.255.255.0(子網掩碼)

    #修改完成後,重啓網絡使用ip生效:service network restart

    ping 10.10.0.1(真機)

  三、修改DNS以便上外網

    (1)設置不經過網絡管理器管理DNS

       vi /etc/NetworkManager/NetworkManager.conf

       添加:dns=none

    (2)新增DNS

      vi /etc/resolv.conf

      添加:nameserver=10.10.0.254(和網關保持一致,就相似虛擬機master和真機同接一個路由器同樣,這樣就共享上外網了)

      ping www.qq.com進行測試

  四、安裝vim便於快速編輯文本

    rpm -qa|grep vim //查找是否安裝了vim

    yum -y install vim*  //安裝vim,須要鏈接外網

  五、修改主機名

    vim /etc/hostname

    master

  六、修改hosts文件

    vim /etc/hosts

    10.10.0.100 master

    10.10.0.101 slave1

    10.10.0.102 slave2

3、安裝輔助工具

  一、安裝xftp(真機向虛擬機傳文件)

  二、安裝xshell(遠程登陸虛擬機更方便操做)

4、安裝jdk

  一、下載jdk,並經過xftp傳入master虛擬機,解壓便可。

    (1)事先建立目錄,命令:mkdir -p /home/hadoop/download ,說明:download專門放下載的安裝包(jdk、hadoop、hbase等),安裝於hadoop目錄下。

    (2)解壓:tar -zxvf  /home/hadoop/download/jdk-8u181-linux-x64.tar.gz  -C  /home/hadoop/

  二、配置jdk

    vim  /etc/profile(編輯配置文件)     

      添加:

      export JAVA_HOME=/home/hadoop/jdk1.8.0_181
      export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
      export PATH=.:$JAVA_HOME/bin:$PATH

    source  /etc/profile(編譯生效)

5、安裝hadoop

  一、下載安裝

    解壓命令:tar -zxvf  /home/hadoop/download/hadoop-2.7.3.tar.gz -C  /home/hadoop/

  二、配置>

    (1)配置環境變量

      vim /etc/profile

        export JAVA_HOME=/home/hadoop/jdk1.8.0_181
        export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
        export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
        export PATH=.:$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP/sbin

      source /etc/profile

    (2)編輯slaves文件

      進入hadoop配置文件所在目錄:cd  /home/hadoop/hadoop-2.7.3/etc/hadoop/

      vim slaves

        slave1

        slave2

      說明:將datanode的主機名寫入該文件,刪除原來的localhost,讓master僅做爲namenode用

    (3)編輯core-site.xml文件

      vim core-site.xml

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

          <!-- 該臨時目錄主要存放secondaryNameNode的一些數據,如:fsimage、edit這樣數據是爲了恢復NameNode節點而準備的 -->
          <value>/home/hadoop/hadoop-2.7.3/tmp</value>
        </property>
        </configuration>

      說明:事先要建立tmp目錄

    (4)編輯hdfs-site.xml文件

      vim hdfs-site.xml  

        <configuration>
        <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>master:9001</value>  <!-- 經過web方式查看secondaryNameNode節點的狀態 -->
        </property>
        <property>
          <name>dfs.replication</name><!--DataNode的副本數-->
          <value>2</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>/home/hadoop/hadoop-2.7.3/hdfs/name</value>
        </property>
        <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/hadoop-2.7.3/hdfs/data</value>
        </property>
        </configuration>

      說明:須要建立hdfs目錄,但不須要建立其下的name和data,格式化後會自動建立這兩目錄。

    (5)編輯yarn-site.xml文件(若是修改後必定要複製到其它節點

      vim 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>dfs.resourcemanager.hostname</name>
          <value>master</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:8031</value>
        </property>

        </configuration>

    (6)編輯mapred-site.xml文件

      重命名:mv  mapred-site.xml.template   mapred-site.xml

      編輯:vim mapred-site.xml 

        <configuration>
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
          <final>true</final>
        </property>
        <property>
          <name>mapreduce.jobhistory.address</name>
          <value>master:10020</value>
        </property>
        <property>
          <name>mapreduce.jobhistory.webapp.address</name>
          <value>master:19888</value>
        </property>
        </configuration>

    (7)編輯hadoop-env.sh

      vim hadoop-env.sh

        export JAVA_HOME=/home/hadoop/jdk1.8.0_181

    (8)編輯yarn-env.sh

        vim yarn-env.sh

          export JAVA_HOME=/home/hadoop/jdk1.8.0_181

 

6、完整克隆master爲slave一、slave2

  一、修改slave1的ip

    vim /etc/sysconfig/network-scripts/ifcfg-ens33

      IPADDR=10.10.0.101(IP地址)

  二、修改slave1的主機名

    vim /etc/hostname

      slave1

  三、修改slave2的ip

    vim /etc/sysconfig/network-scripts/ifcfg-ens33

      IPADDR=10.10.0.102(IP地址)

  四、修改slave1的主機名

    vim /etc/hostname

      slave2

7、集羣ssh免密登陸

  以master爲例

  一、生成密鑰:ssh-keygen -P ""

   在/root/.ssh目錄下能夠看到有authorized_keys、id_rsa、id_rsa.pub三個文件

  二、將master的公鑰id_rsa.pub複製到master、slave一、slave2的authorized_keys

    (1)ssh-copy-id master  //登陸測試:ssh master//退出:exit

    (2)ssh-copy-id slave1

    (3)ssh-copy-id slave2

  三、slave1和slave2重複上述步驟2

8、啓動hadoop

   第一次啓動須要格式化:hdfs namenode -format  

  啓動:start-all.sh(至關於start-hdfs.sh和start-yarn.sh)

  查看master進程:jps

    Jps、NameNode、SecondaryNameNode、ResourceManager

  查看slave1進程:jps

    Jps、DataNode、NodeManager

  真機瀏覽器訪問hadoop

    http://10.10.0.100:50070  //50070是namenode默認的端口號

  查看節點的狀況:http://10.10.0.100:8088  //8088是ResourceManager默認的端口號

   運行wordcount:

    一、在hdfs上新建目錄

      hdfs dfs -mkdir -p /input/wordcount(輸入目錄)

      hdfs dfs -mkdir -p /output/wordcount(輸出目錄)

    二、新建2個文本文件txt一、txt2並傳入hdfs,做爲運行所須要的數據

      hdfs dfs -put  /tmp/txt* /input/wordcount

    三、運行hadoop自帶的wordcount程序

      hadoop jar /home/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar /input/wordcount /output/wordcount

    四、觀察結果:hdfs dfs -ls output/wordcount

 

 

安裝zookeeper

  一、安裝

    進入download目錄:cd /home/hadoop/download/

    解壓:tar -zxvf  zookeeper-3.4.9 -C ..(..爲父目錄即hadoop)

  二、配置環境變量

    export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.9

    export PATH=$PATH:$ZOOKEEPER_HOME/bin(在末尾加zookeeper的bin路徑)

  三、修改配置文件

    先建立文件夾:

      mkdir -p /home/hadoop/zookeeper-3.4.9/data

      mkdir -p /home/hadoop/zookeeper-3.4.9/log

    複製zoo_sample.cfg:

      cd /home/hadoop/zookeeper-3.4.9/conf

      cp zoo_sample.cfg zoo.cfg

      vim zoo.cfg

        dataDir=/home/hadoop/zookeeper-3.4.9/data

        dataLogDir=/home/hadoop/zookeeper-3.4.9/log

        server.1=master:2888:3888

        server.2=slave1:2888:3888

        server.3=slave2:2888:3888

      在dataDir對應的目錄下建立myid並輸入內容:

        cd /home/hadoop/zookeeper-3.4.9/data

        echo '1' >myid

  四、複製zookeeper-3.4.9到slave一、slave2

      scp -r /home/hadoop/zookeeper-3.4.9 slave1:/home/hadoop/

      修改slave1的data目錄下myid爲2

        vim /home/hadoop/zookeeper-3.4.9/data/myid

          2

      scp -r /home/hadoop/zookeeper-3.4.9 slave2:/home/hadoop/

      修改slave2的data目錄下myid爲3

        vim /home/hadoop/zookeeper-3.4.9/data/myid

          3

  五、在三臺機器上分別啓動zkServer

      /home/hadoop/zookeeper-3.4.9/bin/zkServer.sh start

      查看進程:jps

      2225 NameNode
      3889 Jps
      2564 ResourceManager
      3048 QuorumPeerMain(增長)
      2413 SecondaryNameNode

      查看狀態:zkServer.sh status

 

安裝hbase

  一、安裝

    進入download目錄:cd /home/hadoop/download/

    解壓:tar -zxvf  hbase-1.2.3 -C ..(..爲父目錄即hadoop)

  二、配置環境變量

    vim /etc/profile

      export HBASE_HOME=/home/hadoop/hbase-1.2.3

      末尾添加bin到path:

        :$HBASE_HOME/bin

    source /etc/profile

  三、修改配置文件

    進入配置目錄:cd /home/hadoop/hbase-1.2.3/conf

    vim hbase-env.sh

      export JAVA_HOME=/home/hadoop/jdk1.8.0_181

      export HBASE_MANAGES_ZK=false

    vim hbase.site.xml

      <configuration>

      <property>

        <name>hbase.rootdir</name>

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

      </property>

      <property>

        <name>hbase.cluster.distributed</name>

        <value>true</value>

      </property>

      <property>

          <name>hbase.zookeeper.quorum</name>

          <value>master,slave1,slave2</value>

      </property>

      <property>

        <name>hbase.zookeeper.property.dataDir</name>

        <value>/home/hadoop/zookeeper-3.4.9</value>

      </property>

      </configuration>

    vim  regionservers

      slave1

      slave2

    說明:regionservers文件中列出了你但願運行的HRegionServer

  四、複製hbase-1.2.3到slave一、slave2

    scp -r /home/hadoop/hbase-1.2.3 slave1:/home/hadoop

    scp -r /home/hadoop/hbase-1.2.3 slave2:/home/hadoop

  五、啓動hbase

    啓動以前先要啓動hadoop集羣

    啓動zookeeper(zkServer.sh start),注意:三臺都要啓動

    啓動hbase

      /home/hadoop/hbase-1.2.3/bin/start-hbase.sh

    查看master進程:jps      

      2225 NameNode
      2564 ResourceManager
      4245 Jps
      4070 HMaster(啓動hbase增長的)
      3048 QuorumPeerMain(啓動zookeeper增長的)
      2413 SecondaryNameNode

    查看slave進程:jps  

      2057 DataNode
      2749 HRegionServer(啓動hbase增長的)
      2367 QuorumPeerMain(啓動zookeeper增長的)
      2895 Jps

    在瀏覽器中輸入http://master:16010就能夠在界面上看到hbase的配置了

  六、啓動hbase shell

    hbase shell

    注:退出hbase shell:exit

      關閉hbase:stop-hbase.sh

 

 安裝hive

  一、安裝

    tar  -zxvf  /home/hadoop/download/apache-hive-2.1.0-bin.tar.gz  ..

  二、配置

      (1)配置環境變量:vim /etc/profile

        export $HIVE_HOME=/home/hadoop/apache-hive-2.1.0-bin

        添加path::$HIVE_HOME/bin

      從新編譯:source /etc/profile

      測試:hive --version

      (2)修改hive-site.xml(在conf目錄下)

<property>
 <name>javax.jdo.option.ConnectionURL</name>
 <value>jdbc:mysql://10.10.0.1:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
</property>
<property>
 <name>javax.jdo.option.ConnectionDriverName</name>
 <value>com.mysql.jdbc.Driver</value>
</property>
<property>
 <name>javax.jdo.option.ConnectionUserName</name>
 <value>root</value>
</property>
<property>
 <name>javax.jdo.option.ConnectionPassword</name>
 <value>root</value>
</property>

      說明:

        本配置主要是將數據庫的元信息保存在關係型數據庫mysql中,默認是保存在derby數據庫。

        真機(win7)上安裝mysql服務,用戶名:root   密碼:root ,最好在真機的mysql數據庫上建立hive數據庫,保存hive中建立的全部數據庫的元信息,若是不建立的話,配置爲自動建立。 

        下載mysql驅動mysql-connector-java-5.1.44.jar到hive目錄下的子目錄lib中。

       (3)初始化mysql元數據

          schematool -dbType mysql -initSchema     

     

三、啓動 

    (1)先啓動hdfs
      $HADOOP_HOME/sbin/start-all.sh
    (2)啓動hive
      hive 

安裝scala

  一、安裝

    tar  -zxvf  /home/hadoop/download/scala-2.11.0.tgz  ..

  二、配置

    vim /etc/profile

      export $SCALA_HOME=/home/hadoop/scala-2.11.0

      添加path::$SCALA_HOME/bin

  三、啓動

    scala

    退出scala shell::quit

 

安裝spark

  一、安裝

    tar  -zxvf  /home/hadoop/download/spark-2.3.0-bin-hadoop2.7.tgz  -C ..

  二、配置

    (1)配置環境變量

      vim /etc/profile

        export SPARK_HOME=/home/hadoop/spark-2.3.0-bin-hadoop2.7

        添加path::$SPARK_HOME/bin

      source /etc/profile

    (2)修改spark-env.sh($SPARK_HOME/conf)

      將spark-env.sh.template重命名爲spark-env.sh

      vim spark-env.sh 

        export JAVA_HOME=/home/hadoop/jdk1.8.0_181
        export SCALA_HOME=/home/hadoop/scala-2.11.0
        export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
        export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.7.3/etc/hadoop
        export SPARK_MASTER_IP=master
        export SPARK_WORKER_MEMORY=1024M

    (3)修改slaves

      vim slaves

        master

        slave1

        slave2

    (4)將配置好的spark目錄複製到其餘節點

      scp  -r  $SPARK_HOME  slave1:/home/hadoop/

      scp  -r  $SPARK_HOME  slave2:/home/hadoop/

  三、啓動spark

    一、啓動hadoop

      $HADOOP_HOME/sbin/start-all.sh

    二、啓動spark

      $SPARK_HOME/sbin/start-all.sh

    三、web查看

      master:8080

  四、使用sbt打包運行spark程序

    (1)下載sbt-launch.jar放入安裝目錄(/home/hadoop/sbt)

    (2)建立shell腳本文件用於啓動sbt打包程序

      文件名:/home/hadoop/sbt/sbt  

        SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
        java $SBT_OPTS -jar /home/hadoop/sbt/bin/sbt-launch.jar "$@"

      chmod -R 777 /home/hadoop/sbt/sbt(使該文件件可執行)

    (3)建立spark應用程序

    /root/sparkApp/src/main/scala/Hello.scala  

    import org.apache.spark.SparkContext
    import org.apache.spark.SparkContext._
    import org.apache.spark.SparkConf

       object Hello{
      def main(args:Array[String]){
        val logFile="file:///tmp/txt1"
        val conf=new SparkConf().setAppName("my spark app")
        val sc=new SparkContext(conf)
        val logData=sc.textFile(logFile,2).cache()
        val numA=logData.filter(line=>line.contains("a")).count()
        val numB=logData.filter(line=>line.contains("b")).count()
        println("a:%s,b:%s".format(numA,numB))
      }
    }

    //統計txt1中文本中a,b出現的次數

     (4)建立應用程序信息文件(~/sparkApp/hello.sbt)

      name:="My Spark Project"
      version:="1.0"
      scalaVersion:="2.11.0"
      libraryDependencies+="org.apache.spark" %% "spark-core" % "1.6.0"

      用於聲明應用程序信息及與spark的依賴關係

    (5)在應用程序的根目錄下打包spark程序

      cd ~/sparkApp

      /home/hadoop/sbt/sbt package

    (6)使用spark-submit提交到spark上運行

      spark-submit --class "Hello" /root/sparkApp/target/scala-2.11/my-spark-project_2.11-1.0.jar

      結果:a:2,b:0

相關文章
相關標籤/搜索