一、服務器環境準備
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機也同樣操作
接下來配置機器名信息
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
同理配置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進行測試驗證。