hadoop2.6.5+spark2.1.0+hbase1.2.6完全分佈式環境部署

一、服務器環境準備

tips:本例作爲測試環境,只使用了兩臺服務器,實際生產環境至少會有三臺以上服務器作一主多從。
如果要配置 hadoop JournalNode zookeeper高可用,則至少需要五臺服務器。

服務器centos7 * 2

  • A master:10.10.16.92
  • B slave:10.10.16.93

環境

  • Jdk:1.8
  • Scala:2.11.10
  • Zookeeper:3.4.6
  • Hadoop:2.6.5
  • Spark:2.1.0
  • Hbase:1.2.6
  • Kafka:2.11-1.0.0

二、服務器配置

域名機器名配置

登錄服務器A,配置hosts

vi /etc/hosts

添加域名信息,B機也同樣操作
host配置

接下來配置機器名信息

vi /etc/sysconfig/network

配置機器名

隨後重啓

這裏寫圖片描述

確認主機名生效

這裏寫圖片描述

B機同上,但是主機名改爲test-slave

SSH免祕登錄

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
scp -p ~/.ssh/id_rsa.pub root@test-slave:/root/.ssh/master_rsa.pub

登錄到test-slave,執行

cat ~/.ssh/master_rsa.pub >> ~/.ssh/authorized_keys

嘗試登陸slave

ssh test-slave

ssh test-slave

同理配置slave

這裏寫圖片描述
這裏寫圖片描述

防火牆配置

爲了方便,剛開始部署測試時可以先將防火牆完全關閉(centos 7 systemctl stop firewalld,老版本service iptables stop),等測試OK後再重新開啓,這裏根據本例需要,配置防火牆開啓端口

firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --add-port=50070/tcp --permanent
firewall-cmd --add-port=9070/tcp --permanent
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --add-port=2888/tcp --permanent
firewall-cmd --add-port=3888/tcp --permanent
firewall-cmd --add-port=7077/tcp --permanent
firewall-cmd --add-port=8085/tcp --permanent
firewall-cmd --add-port=50090/tcp --permanent
firewall-cmd --add-port=16000/tcp --permanent
firewall-cmd --add-port=60010/tcp --permanent
firewall-cmd --add-port=9092/tcp --permanent
firewall-cmd --add-port=6066/tcp --permanent

三、軟件安裝並啓動

上傳軟件安裝包,或是直接用wget下載

  • jdk-8u144-linux-x64.tar.gz
  • scala-2.11.0.tgz
  • zookeeper-3.4.6.tar.gz
  • kafka_2.11-1.0.0.tgz
  • hbase-1.2.6-bin.tar.gz
  • hadoop-2.6.5.tar.gz
  • spark-2.1.0-bin-without-hadoop.tgz

本例測試環境全部統一上傳到/usr/local下
逐個解壓 tar -xvf xxx.tar.gz
隨後配置環境變量

vi /etc/profile

#java,hadoop
export JAVA_HOME=/usr/local/jdk1.8.0_144
export HADOOP_HOME=/usr/local/hadoop-2.6.5
export YARN_HOME=$HADOOP_HOME
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:/usr/local/apache-maven-3.0.5/bin:/usr/local/git/bin:$PATH
export CLASS_PATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib
#scala
export SCALA_HOME=/usr/local/scala-2.11.0
export PATH=$SCALA_HOME/bin:$PATH
#spark
export SPARK_HOME=/usr/local/spark-2.1.0/spark-2.1.0-bin-without-hadoop
#hbase
export HBASE_HOME=/usr/local/hbase-1.2.6
export PATH=$HBASE_HOME/bin:$PATH
#Set ZOOKEEPER_HOME ENVIRONMENT
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin

配置完成後source生效

source /etc/profile

自行檢驗環境變量是否生效,比如java -version
解壓並配置JAVA_HOME,SCALA_HOME就等於安裝了java與scala,接下來開始大數據應用安裝。

Hadoop安裝並啓動

因爲只需要hadoop的hdfs用來支持hbase,mapreduce交由spark處理,這裏不需要啓動hadoop yarn
在/usr下創建臨時文件夾hadoop-data

進入$HADOOP_HOME/etc/hadoop

編輯core-site.xml

<configuration>
        <property>
             <name>hadoop.tmp.dir</name>
             <value>file:/usr/hadoop-data</value>
             <description>Abase for other temporary directories.</description>
        </property>
        <property>
             <name>fs.defaultFS</name>
             <value>hdfs://test-master:9070</value>
        </property>
</configuration>

編輯hadoop-env.sh

將export JAVA_HOME={JAVA_HOME}直接改爲

export JAVA_HOME=/usr/local/jdk1.8.0_144

編輯hdfs-site.xml

<configuration>
         <property>
             <name>dfs.replication</name>
             <value>2</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                 <name>dfs.namenode.rpc-address</name>
                 <value>test-master:9070</value>
        </property>
        <property>
                <name>dfs.namenode.rpc-bind-host</name>
                <value>0.0.0.0</value>
        </property>
        <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/usr/hadoop-data/dfs/name</value>
        </property>
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/usr/hadoop-data/dfs/data</value>
        </property>
</configuration>

編輯slaves

這裏寫圖片描述

B機器(test-slave)同主機相同配置

隨後進入A機器,執行$HADOOP_HOME/bin/hadoop namenode -format,首次執行即可

這裏寫圖片描述

然後啓動hadoop $HADOOP_HOME/sbin/start-dfs.sh
並確認啓動namenode

這裏寫圖片描述

Slave確定啓動datanode

這裏寫圖片描述

訪問10.10.16.92:50070,確認各節點正常

這裏寫圖片描述

Zookeeper安裝並啓動

建立zookeeper的data文件夾 /usr/zoo-data
進入zookeeper配置文件夾conf

cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

文件內容修改如下

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zoo-data
dataLogDir=/usr/zoo-log
clientPort=2181
server.1=test-master:2888:3888
server.2=test-slave:2888:3888

再進入dataDir文件夾下創建myid文件,內容爲當前主機標號數字,比如test-master對應server.1,則myid中內容爲1

接下來進入bin文件夾啓動zookeeper

./zkServer start

再進入B機,同樣方式啓動
最後執行jps並查看運行狀態

./zkServer status

確認連接

./zkCli -server test-master

這裏寫圖片描述

Hbase集成並啓動,HA模式

進入hbase 的conf文件夾
配置hbase-env.sh
修改以下參數,沒有的新增

export JAVA_HOME=/usr/local/jdk1.8.0_144
export HBASE_CLASSPATH=/usr/local/hadoop-2.6.5/etc/hadoopexport 
export HBASE_MANAGES_ZK=false

配置hbase-site.xml

<configuration>
        <property>
           <name>hbase.rootdir</name>
           <value>hdfs://test-master:9070/hbase</value>
         </property>
         <property>
           <name>hbase.cluster.distributed</name>
           <value>true</value>
         </property>
       <!-- <property><name>hbase.master</name><value>test-master</value>
自定義master,存在單點故障,HA模式不需要設置,交給zookeeper
         </property>-->
        <property>
            <name>hbase.zookeeper.property.clientPort</name>
            <value>2181</value>
        </property>
         <property>
            <name>hbase.zookeeper.quorum</name>
            <value>test-master,test-slave</value>
        </property>
    <property>
        <name>zookeeper.session.timeout</name>
        <value>60000000</value>
    </property>
    <property>
        <name>dfs.support.append</name>
        <value>true</value>
    </property>
        <property>
                <name>hbase.master.info.port</name>
                <value>60010</value>
        </property>
</configuration>

配置regionservers
修改localhost爲test-slave

B機器(test-slave)做同樣配置,或直接拷貝

scp hbase-env.sh hbase-site.xml regionservers root@test-slave:/usr/local/hbase-1.2.6/conf/

啓動hbase

A機器:$HBASE_HOME/bin/start-hbase.sh
B機器:$HBASE_HOME/bin/hbase-daemon.sh start master

A,B機器確認啓動狀態

這裏寫圖片描述
這裏寫圖片描述

當前master、slave信息

這裏寫圖片描述

備用master

這裏寫圖片描述

主節點掛掉後slave升級爲主節點
這裏寫圖片描述

Spark集成並啓動,HA模式

進入spark配置文件目錄
編輯spark-env.sh

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop-2.6.5/bin/hadoop classpath)
SPARK_LOCAL_DIRS=/usr/local/spark-2.1.0-bin-without-hadoop/local #配置spark的local


#SPARK_MASTER_IP=test-master 手動指定master節點ip或hostname,存在單點故障
SPARK_MASTER_WEBUI_PORT=8085 #web頁面端口
#SPARK_MASTER_HOST=test-master
export SPARK_MASTER_OPTS="
-Dspark.deploy.defaultCores=4 
-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=test-master:2181,test-slave:2181 -Dspark.deploy.zookeeper.dir=/spark" #spark-shell啓動使用核數

SPARK_EXECUTOR_INSTANCES=1
SPARK_WORKER_CORES=4 #Worker的cpu核數
SPARK_WORKER_MEMORY=512m #worker內存大小
SPARK_WORKER_DIR=/usr/local/spark-2.1.0-bin-without-hadoop/worker #worker目錄
SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.appDataTtl=604800" #worker自動清理及清理時間間隔
SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://test-master:9070/spark/history" #history server頁面端口>、備份數、log日誌在HDFS的位置
SPARK_LOG_DIR=$SPARK_HOME/logs #配置Spark的log日誌
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop/ #配置hadoop的配置路徑

編輯spark-defaults.conf

#spark.master                     spark://test-master:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://test-master:9070/spark/history
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.driver.memory              1g
spark.executor.memory             500m
spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

編輯slaves

test-slave

配置文件拷貝到B機器

scp hbase-env.sh hbase-site.xml regionservers root@test-slave:/usr/local/hbase-1.2.6/conf/

啓動spark

$SPARK_HOME/sbin/start-all.sh

如果出現JAVA_HOME is not set問題,可以根據報錯機器在對應機器的spark-config.sh裏添加export JAVA_HOME=/usr/local/jdk1.8.0_144

確認啓動情況

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

再進入B機器,執行start-master.sh,啓動備用master

這裏寫圖片描述
這裏寫圖片描述

Kafka集成並啓動

進入kafka的config配置目錄
編輯server.properties
註釋brokerid,也可手動配置broker.id=0
修改如下配置

listeners=PLAINTEXT://test-master:9092
advertised.listeners=PLAINTEXT://test-master:9092
log.dirs=/logs/kafka-logs
zookeeper.connect=test-master:2181,test-slave:2181

B機
註釋brokerid,也可以手動配置broker.id=1
修改如下配置

listeners=PLAINTEXT://test-slave:9092
advertised.listeners=PLAINTEXT://test-slave:9092
log.dirs=/logs/kafka-logs
zookeeper.connect=test-master:2181,test-slave:2181

啓動kafka(A,B機都要)
進入kafka/bin

./kafka-server-start.sh ../config/server.properties  &

這裏寫圖片描述
這裏寫圖片描述

至此整個集成環境部署完成,可以結合前幾篇博客中提到的demo進行測試驗證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章