一、環(huán)境選擇
1. 前言
1.1. 何為大數(shù)據(jù)
百度百科給的定義是:大數(shù)據(jù)(big data),指無(wú)法在一定時(shí)間范圍內(nèi)用常規(guī)軟件工具進(jìn)行捕捉、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長(zhǎng)率和多樣化的信息資產(chǎn)。
1.2. 搭建大數(shù)據(jù)環(huán)境的意義
廢話少說(shuō),就兩個(gè)字"高薪",如果你滿足于一個(gè)月10000元的工資,如果你沉溺于老婆孩子熱炕頭的安逸,流連忘返于燈紅酒綠的花花世界。那么我們到此為止,你可以不用往下面繼續(xù)浪費(fèi)時(shí)間閱讀了。請(qǐng)看下圖,智聯(lián)招聘截圖時(shí)間是2018年8月25日,周六。有人說(shuō),建哥你周末在加班??!加班?不可能的,敲代碼使我快樂(lè)!哈哈哈哈哈,開(kāi)個(gè)玩笑,
本文主要介紹圖中各種技術(shù)框架的安裝配置,閱讀本文大概需要15分鐘,有興趣的朋友可以親自操作一下,時(shí)間在2小時(shí)左右。想想3W到5W的月薪,兩小時(shí)算啥?另外,喜歡的朋友可以關(guān)注我,私信發(fā)送"大數(shù)據(jù)"會(huì)贈(zèng)送相關(guān)大數(shù)據(jù)資料。碼字不易,不喜勿噴!
2. 環(huán)境準(zhǔn)備
2.1. 大數(shù)據(jù)環(huán)境
本次安裝需要三臺(tái)虛擬機(jī),選用的操作系統(tǒng)版本是contos6.9 64位。各組件在三臺(tái)機(jī)器上的分布情況如下:
2.2. PC編譯環(huán)境
另外本機(jī)操作系統(tǒng)是windows7 64位。因?yàn)樾枰幾g打包streamingPro,所以本機(jī)也需要安裝對(duì)應(yīng)的環(huán)境,詳情如下:
2.3. 配置說(shuō)明
· JDK :Hadoop和Spark 依賴的配置.
· Scala:Spark依賴的配置,建議版本不低于spark的版本。
· Hadoop: 是一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu)。
· Spark: 分布式存儲(chǔ)的大數(shù)據(jù)進(jìn)行處理的工具。
· zookeeper:分布式應(yīng)用程序協(xié)調(diào)服務(wù),HBase集群需要。
· HBase: 一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)。
· Hive: 基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,目前的默認(rèn)元數(shù)據(jù)庫(kù)是mysql。
· Kafka:分布式消息隊(duì)列
所需要的安裝包及依賴文件保存在百度云: 鏈接:https://pan.baidu.com/s/1J9YECM0Jd3LYuCqFRFG5yw 密碼:1knn
二、集群的相關(guān)配置
下面前5步操作可以先在一臺(tái)虛擬機(jī)上操作,然后克隆出另外兩臺(tái)機(jī)器。
1. 關(guān)閉防火墻及關(guān)閉操作系統(tǒng)安全訪問(wèn)控制
說(shuō)明:其實(shí)可以不關(guān)閉防火墻,進(jìn)行權(quán)限設(shè)置,但是為了方便訪問(wèn),于是便關(guān)閉了防火墻。每個(gè)機(jī)器都做?。。?/p>
關(guān)閉防火墻的命令 停止防火墻: service iptables stop 啟動(dòng)防火墻: service iptables start 重啟防火墻: service iptables restart 永久關(guān)閉防火墻: chkconfig iptables off
說(shuō)明:操作系統(tǒng)默認(rèn)是打開(kāi)安全訪問(wèn)控制的,這樣會(huì)導(dǎo)致部分軟件安裝配置失敗,為了方便,我們將它關(guān)閉。
查看SELinux狀態(tài)
getenforce
修改配置文件/etc/selinux/config 將SELINUX=enforcing改為SELINUX=disabled
2. 修改系統(tǒng)網(wǎng)絡(luò)配置
配置固定ip地址和dns服務(wù)器地址,保證主機(jī)能上網(wǎng)。
重啟網(wǎng)絡(luò)服務(wù),并檢測(cè)dns是否生效
3. 調(diào)整系統(tǒng)時(shí)區(qū)及時(shí)間配置
首先將時(shí)區(qū)調(diào)整到東八區(qū),
保險(xiǎn)起見(jiàn)再執(zhí)行一下下面的命令
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
集群上的機(jī)器時(shí)間要同步,我們可以將所有的機(jī)器跟集群中某臺(tái)機(jī)器進(jìn)行時(shí)間同步。也可以簡(jiǎn)單的跟互聯(lián)網(wǎng)授時(shí)服務(wù)器同步。
ntpdate pool.ntp.org
4. 安裝java和scala基礎(chǔ)環(huán)境及修改系統(tǒng)環(huán)境變量
大家可以在網(wǎng)盤(pán)下載對(duì)應(yīng)的安裝文件。
安裝jdk1.8
解壓縮jdk安裝包
tar zxvf jdk-8u144-linux-x64.tar.gz
創(chuàng)建目錄/opt/jdk
mkdir /opt/jdk
移動(dòng)文件夾jdk1.8.0_144到/opt/jdk下面,并改名為jdk1.8
mv jdk1.8.0_144/ /opt/jdk/jdk1.8
安裝scala2.12.2
tar zxvf scala-2.12.2.tgz
創(chuàng)建目錄/opt/scala
mkdir /opt/scala
移動(dòng)文件夾scala-2.12.2到/opt/ scala下面,并改名為scala2.12.2
mv scala-2.12.2 /opt/scala/scala2.12.2
在 /etc/profile 這個(gè)配置文件要添加很多的環(huán)境配置,這里就先將整體的環(huán)境配置列舉出來(lái),各位在配置環(huán)境變量的以自己的為準(zhǔn)?。?! 可以先配置好環(huán)境變量之后,在傳輸?shù)狡渌麢C(jī)器上去。
#Java Config
export JAVA_HOME=/opt/java/jdk1.8
export JRE_HOME=/opt/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
# Scala Config
export SCALA_HOME=/opt/scala/scala2.12.2
# Spark Config
export SPARK_HOME=/opt/spark/spark2.2
# Zookeeper Config
export ZK_HOME=/opt/zookeeper/zookeeper3.4
# HBase Config
export HBASE_HOME=/opt/hbase/hbase1.2
# Hadoop Config
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
# Hive Config
export HIVE_HOME=/opt/hive/hive2.1
export HIVE_CONF_DIR=${HIVE_HOME}/conf
#kafka config
export KAFKA_HOME=/opt/kafka/kafka1.0.0
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:$PATH
查看java和scala版本
5. 主機(jī)名更改以及主機(jī)和IP做相關(guān)映射
5.1.更改主機(jī)名
說(shuō)明:更改主機(jī)名是為了方便集群管理,不然每個(gè)機(jī)器的名稱都叫l(wèi)ocalhost也不太好吧! 集群所有的機(jī)器都要做這個(gè)操作。
輸入
vim /etc/sysconfig/network
將localhost.localdomain修改為你要更改的名稱,每臺(tái)名稱都不一樣 例如:
HOSTNAME=master
5.2.主機(jī)和IP的關(guān)系映射
修改hosts文件,做關(guān)系映射 說(shuō)明:這個(gè)每臺(tái)機(jī)器都做這個(gè)配置,具體ip和主機(jī)名稱以自己的為準(zhǔn)。 輸入:
vim /etc/hosts
添加
192.168.153.101 master
192.168.153.102 slave1
192.168.153.103 slave2
重啟機(jī)器,開(kāi)始克隆另外兩臺(tái)機(jī)器slave1,slave2,值得注意的是克隆完之后修改修改ip地址和主機(jī)名。
6. ssh免登錄
設(shè)置ssh免密碼登錄是為了操作方便 生成秘鑰文件 在每臺(tái)機(jī)器上都執(zhí)行一遍 首先輸入:
ssh-keygen -t rsa -P ''
生成秘鑰之后,然后將每臺(tái)機(jī)器/root/.ssh 都存入內(nèi)容相同的文件,文件名稱叫authorized_keys,文件內(nèi)容是我們剛才為3臺(tái)機(jī)器生成的公鑰??梢栽谝慌_(tái)機(jī)器上生成,然后復(fù)制到其它的機(jī)器上。
新建authorized_keys文件 輸入 :
touch /root/.ssh/authorized_keys
編輯 authorized_keys 并將其他機(jī)器上的秘鑰拷貝過(guò)來(lái)
cat /root/.ssh/id_rsa.pub
vim /root/.ssh/authorized_keys
將其它機(jī)器上的 id_rsa.pub 的內(nèi)容拷貝到 authorized_keys這個(gè)文件中。
最終authorized_keys文件的內(nèi)容
將這個(gè)最終的authorized_keys文件copy到其他機(jī)器的 /root/.ssh 目錄下。使用scp或者ftp都可以。 scp命令示例:
scp -r /root/.ssh/authorized_keys root@slave1:/root/.ssh
scp -r /root/.ssh/authorized_keys root@slave2:/root/.ssh
測(cè)試免密碼登錄 輸入:
ssh slave1
ssh slave2
輸入 exit 退出
二、Hadoop的環(huán)境搭建
事先說(shuō)明,這些配置可以在一臺(tái)機(jī)器上配置,然后復(fù)制到其他機(jī)器上就行了。復(fù)制之后注意使這些配置文件生效。
1. hadoop配置
1.1. 文件準(zhǔn)備
將下載下來(lái)的Hadoop的配置文件進(jìn)行解壓 在linux上輸入:
tar -xvf hadoop-2.8.2.tar.gz
然后將解壓之后的文件夾移動(dòng)到opt/hadoop文件夾下,沒(méi)有該文件夾就新建,然后將文件夾重命名為hadoop2.8。 在linux上輸入移動(dòng)文件夾命令:
mv hadoop-2.8.2 /opt/hadoop
mv hadoop-2.8.2 hadoop2.8
1.2. 環(huán)境配置
編輯 /etc/profile 文件 輸入:
vim /etc/profile
添加:
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH
輸入:
source /etc/profile
使配置生效
1.3. 修改配置文件
修改 core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml 等這些配置文件 在linux輸入進(jìn)入該目錄的命令:
cd /opt/hadoop/hadoop2.8/etc/hadoop
1.3.1. 修改 core-site.xml
hadoop的存放路徑可以自行更改。開(kāi)始我以為這些文件夾需要手動(dòng)創(chuàng)建,后來(lái)實(shí)踐了,如果不手動(dòng)創(chuàng)建,會(huì)自動(dòng)創(chuàng)建的,所以就去掉了手動(dòng)創(chuàng)建目錄的步驟。 輸入:
vim core-site.xml
在<configuration>節(jié)點(diǎn)內(nèi)加入配置:
<configuration>
<property>
<name>hadoop.temp.dir</name>
<value>file:/root/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- eclipse連接hive 的配置-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
說(shuō)明: fs.defaultFS 是缺省文件的名稱, 最早使用的是 fs.default.name,后來(lái)在最新官方文檔中查到該方法已經(jīng)棄用了。于是邊改成這個(gè)了。ps:感覺(jué)也沒(méi)啥區(qū)別。
1.3.2. 修改 hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}
修改為:
export JAVA_HOME=/opt/java/jdk1.8
注:修改為自己JDK的路徑
1.3.3. 修改 hdfs-site.xml
下面的hdfs的存放路徑,可以根據(jù)自己機(jī)器更改。 在<configuration>節(jié)點(diǎn)內(nèi)加入配置:
<property>
<!--副本個(gè)數(shù)-->
<name>dfs:replication</name>
<value>2</value>
1.3.4. 修改mapred-site.xml
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/hadoop/data</value>
</property>
執(zhí)行mapreduce的運(yùn)行框架配置。ps:感覺(jué)這個(gè)配置沒(méi)啥用,可能我沒(méi)用mr吧。 如果沒(méi)有 mapred-site.xml 該文件,就復(fù)制mapred-site.xml.template文件并重命名為mapred-site.xml。 修改這個(gè)新建的mapred-site.xml文件,在<configuration>節(jié)點(diǎn)內(nèi)加入配置:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
1.3.5. 修改yarn-site.xml文件
yarn 資源調(diào)度的配置,集群的話這個(gè)配置是必須的。 修改/opt/hadoop/hadoop2.8/etc/hadoop/yarn-site.xml文件, 在<configuration>節(jié)點(diǎn)內(nèi)加入配置
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<description>The address of the scheduler interface.</description>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<description>The http address of the RM web application.</description>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<description>The https adddress of the RM web application.</description>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<description>The address of the RM admin interface.</description>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<!--#mapreduce分發(fā)任務(wù)的機(jī)制-->
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8182</value>
<!--每個(gè)節(jié)點(diǎn)可用內(nèi)存,單位MB,默認(rèn)-->
<discription> 8182MB</discription>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
說(shuō)明:yarn.nodemanager.vmem-check-enabled這個(gè)的意思是忽略虛擬內(nèi)存的檢查,如果你是安裝在虛擬機(jī)上,這個(gè)配置很有用,配上去之后后續(xù)操作不容易出問(wèn)題。如果是實(shí)體機(jī)上,并且內(nèi)存夠多,可以將這個(gè)配置去掉。
1.3.6. 修改slaves
設(shè)置主從的配置。如果不設(shè)置這個(gè),集群就無(wú)法得知主從了。如果是單機(jī)模式,就沒(méi)必要配置了。 修改/opt/hadoop/hadoop2.8/etc/hadoop/slaves文件 更改為
slave1
slave2
在一臺(tái)機(jī)器上(最好是master)做完這些配置之后,我們使用scp命令將這些配置傳輸?shù)狡渌麢C(jī)器上。 輸入:
hadoop環(huán)境傳輸
scp -r /opt/hadoop root@slave1:/opt
scp -r /opt/hadoop root@slave2:/opt
傳輸之后,便在主節(jié)點(diǎn)啟動(dòng)集群。 在啟動(dòng)hadoop之前,需要初始化,這個(gè)只需要在master上初始化就可以了。
2. hadoop啟動(dòng)
注:啟動(dòng)hadoop之前確保防火墻關(guān)閉,各個(gè)機(jī)器時(shí)間通過(guò),ssh免登錄都沒(méi)問(wèn)題。 初始化hadoop 切換到/opt/hadoop/hadoop2.8/bin目錄下輸入
./hdfs namenode -format
初始化成功之后,切換到/opt/hadoop/hadoop2.8/sbin 啟動(dòng)hadoop 的hdfs和yarn 輸入:
start-dfs.sh
start-yarn.sh
第一次登錄會(huì)詢問(wèn)是否連接,輸入yes ,然后輸入密碼就可以了 啟動(dòng)成功之后,可以使用jps命令在各個(gè)機(jī)器上查看是否成功 可以在瀏覽器輸入: ip+50070 和8088端口查看 http://master:50070
http://master:8088/cluster
若如圖顯示,則啟動(dòng)成功。 若失敗,檢查jps是否成功啟動(dòng),防火墻是否都關(guān)閉。都確認(rèn)沒(méi)問(wèn)題之后,還是無(wú)法打開(kāi)界面,請(qǐng)查看日志,再來(lái)找原因。
四、Spark的環(huán)境配置
1. Spark配置
1.1. 文件準(zhǔn)備
將下載好的Spark文件解壓 輸入
tar zxvf spark-2.2.0-bin-hadoop2.7.tgz
然后移動(dòng)到/opt/spark 里面,并重命名 輸入
mkdir /opt/spark
mv spark-2.2.0-bin-hadoop2.7 /opt/spark/spark2.2
1.2. 環(huán)境配置
編輯 /etc/profile 文件 (省略,前期已經(jīng)做過(guò)了)輸入:
export SPARK_HOME=/opt/spark/spark2.2
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:$PATH
輸入:
source /etc/profile
使配置生效
1.3. 更改配置文件
切換目錄 輸入: cd /opt/spark/spark2.2/conf/
1.3.1. 修改 spark-env.sh
在conf目錄下,修改spark-env.sh文件,如果沒(méi)有 spark-env.sh 該文件,就復(fù)制spark-env.sh.template文件并重命名為spark-env.sh。 修改這個(gè)新建的spark-env.sh文件,加入配置:
export SCALA_HOME=/opt/scala/scala2.12.2
export JAVA_HOME=/opt/java/jdk1.8
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/opt/spark/spark2.2
export SPARK_MASTER_IP=master
export SPARK_EXECUTOR_MEMORY=4G
注:上面的路徑以自己的為準(zhǔn),SPARK_MASTER_IP為主機(jī),SPARK_EXECUTOR_MEMORY為設(shè)置的運(yùn)行內(nèi)存。
1.3.2. 修改slaves
slaves 分布式文件 在conf目錄下,修改slaves文件,如果沒(méi)有 slaves 該文件,就復(fù)制slaves .template文件并重命名為slaves 。 修改這個(gè)新建的slaves 文件,加入配置:
slave1
slave2
在一臺(tái)機(jī)器上(最好是master)做完這些配置之后,我們使用scp命令將這些配置傳輸?shù)狡渌麢C(jī)器上。
spark環(huán)境傳輸
scp -r /opt/spark root@slave1:/opt
scp -r /opt/spark root@slave2:/opt
傳輸之后,便在主節(jié)點(diǎn)啟動(dòng)集群。
2. spark啟動(dòng)
說(shuō)明:要先啟動(dòng)Hadoop 切換到Spark目錄下 輸入:
cd /opt/spark/spark2.2/sbin
然后啟動(dòng)Spark 輸入:
start-all.sh
啟動(dòng)成功之后,可以使用jps命令在各個(gè)機(jī)器上查看是否成功。 可以在瀏覽器輸入: ip+8080 端口查看
若成功顯示這個(gè)界面,則表示Spark成功啟動(dòng)。
五、Zookeeper的環(huán)境配置
因?yàn)镠Base以及kafka做集群,所以就需要zookeeper了。 zookeeper 在很多環(huán)境搭建上,都會(huì)有他的身影,如kafka、storm等,這里就不多說(shuō)了。
1. 文件準(zhǔn)備
將下載下來(lái)的Zookeeper 的配置文件進(jìn)行解壓 在linux上輸入:
tar -xvf zookeeper-3.4.10.tar.gz
然后移動(dòng)到/opt/zookeeper里面,沒(méi)有就新建,然后將文件夾重命名為zookeeper3.4 輸入
mkdir /opt/zookeeper
mv zookeeper-3.4.10 /opt/zookeeper/zookeeper3.4
2. 環(huán)境配置(省略,前期已經(jīng)做過(guò)了)
編輯 /etc/profile 文件 輸入:
export ZK_HOME=/opt/zookeeper/zookeeper3.4
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${ZK_HOME}/bin:$PATH
輸入:
source /etc/profile
使配置生效
3. 修改配置文件
3.1. 創(chuàng)建文件和目錄
在集群的服務(wù)器上都創(chuàng)建這些目錄
mkdir /opt/zookeeper/data
mkdir /opt/zookeeper/dataLog
并且在/opt/zookeeper/data目錄下創(chuàng)建myid文件 輸入:
touch myid
創(chuàng)建成功之后,更改myid文件。 我這邊為了方便,將master、slave1、slave2的myid文件內(nèi)容改為1,2,3
3.2. 新建zoo.cfg
切換到/opt/zookeeper/zookeeper3.4/conf 目錄下 如果沒(méi)有 zoo.cfg 該文件,就復(fù)制zoo_sample.cfg文件并重命名為zoo.cfg。 修改這個(gè)新建的zoo.cfg文件
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/dataLog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
配置說(shuō)明:
client port,顧名思義,就是客戶端連接zookeeper服務(wù)的端口。這是一個(gè)TCP port。
dataLogDir里是放到的順序日志(WAL)。而dataDir里放的是內(nèi)存數(shù)據(jù)結(jié)構(gòu)的snapshot,便于快速恢復(fù)。為了達(dá)到性能最大化,一般建議把dataDir和dataLogDir分到不同的磁盤(pán)上,這樣就可以充分利用磁盤(pán)順序?qū)懙奶匦?。dataDir和dataLogDir需要自己創(chuàng)建,目錄可以自己制定,對(duì)應(yīng)即可。
server.1中的這個(gè)1需要和master這個(gè)機(jī)器上的dataDir目錄中的myid文件中的數(shù)值對(duì)應(yīng)。server.2中的這個(gè)2需要和slave1這個(gè)機(jī)器上的dataDir目錄中的myid文件中的數(shù)值對(duì)應(yīng)。server.3中的這個(gè)3需要和slave2這個(gè)機(jī)器上的dataDir目錄中的myid文件中的數(shù)值對(duì)應(yīng)。當(dāng)然,數(shù)值你可以隨便用,只要對(duì)應(yīng)即可。2888和3888的端口號(hào)也可以隨便用,因?yàn)樵诓煌瑱C(jī)器上,用成一樣也無(wú)所謂。
其他配置說(shuō)明:
1.tickTime:CS通信心跳數(shù) Zookeeper 服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時(shí)間間隔,也就是每個(gè) tickTime 時(shí)間就會(huì)發(fā)送一個(gè)心跳。tickTime以毫秒為單位。 tickTime=2000 2.initLimit:LF初始通信時(shí)限 集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間初始連接時(shí)能容忍的最多心跳數(shù)(tickTime的數(shù)量)。 initLimit=10 3.syncLimit:LF同步通信時(shí)限 集群中的follower服務(wù)器與leader服務(wù)器之間請(qǐng)求和應(yīng)答之間能容忍的最多心跳數(shù)(tickTime的數(shù)量)。 syncLimit=5
依舊將zookeeper傳輸?shù)狡渌臋C(jī)器上,記得更改 /opt/zookeeper/data 下的myid,這個(gè)不能一致。 輸入:
scp -r /opt/zookeeper root@slave1:/opt
scp -r /opt/zookeeper root@slave2:/opt
修改myid
4. 啟動(dòng)zookeeper
因?yàn)閦ookeeper是選舉制,它的主從關(guān)系并不是像hadoop那樣指定的,具體可以看官方的文檔說(shuō)明。 成功配置zookeeper之后,在每臺(tái)機(jī)器上啟動(dòng)zookeeper。 切換到zookeeper目錄下
cd /opt/zookeeper/zookeeper3.4/bin
輸入:
zkServer.sh start
成功啟動(dòng)之后 查看狀態(tài)輸入:
zkServer.sh status
可以查看各個(gè)機(jī)器上zookeeper的leader和follower ,只能一個(gè)是主,隨機(jī)選擇,入下圖:
六、HBase的環(huán)境配置
1. 文件準(zhǔn)備
將下載下來(lái)的HBase的配置文件進(jìn)行解壓 在linux上輸入:
tar -xvf hbase-1.2.6-bin.tar.gz
然后移動(dòng)到/opt/hbase 文件夾里面,并重命名為 hbase1.2 輸入
mv hbase-1.2.6 /opt/hbase
mv hbase-1.2.6/ hbase1.2
2. 環(huán)境配置(省略,前期已經(jīng)做過(guò)了)
編輯 /etc/profile 文件 輸入:
export HBASE_HOME=/opt/hbase/hbase1.2
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:$PATH
輸入:
source /etc/profile
使配置生效 輸入 hbase version 查看版本
3. 修改配置文件
切換到 /opt/hbase/hbase1.2/conf下
3.1. 修改hbase-env.sh
編輯 hbase-env.sh 文件,添加以下配置
export JAVA_HOME=/opt/java/jdk1.8
export HADOOP_HOME=/opt/hadoop/hadoop2.8
export HBASE_HOME=/opt/hbase/hbase1.2
export HBASE_CLASSPATH=/opt/hadoop/hadoop2.8/etc/hadoop
export HBASE_PID_DIR=/root/hbase/pids
export HBASE_MANAGES_ZK=false
說(shuō)明:配置的路徑以自己的為準(zhǔn)。HBASE_MANAGES_ZK=false 是不啟用HBase自帶的Zookeeper集群。
3.2. 修改 hbase-site.xml
編輯hbase-site.xml 文件,在<configuration>添加如下配置
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
<description>The directory shared byregion servers.</description>
</property>
<!-- hbase端口 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<!-- 超時(shí)時(shí)間 -->
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
<!--防止服務(wù)器時(shí)間不同步出錯(cuò) -->
<property>
<name>hbase.master.maxclockskew</name>
<value>150000</value>
</property>
<!-- 集群主機(jī)配置 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<!-- 路徑存放 -->
<property>
<name>hbase.tmp.dir</name>
<value>/root/hbase/tmp</value>
</property>
<!-- true表示分布式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定master -->
<property>
<name>hbase.master</name>
<value>master:60000</value>
</property>
</configuration>
說(shuō)明:hbase.rootdir:這個(gè)目錄是region server的共享目錄,用來(lái)持久化Hbase 。hbase.cluster.distributed :Hbase的運(yùn)行模式。false是單機(jī)模式,true是分布式模式。若為false,Hbase和Zookeeper會(huì)運(yùn)行在同一個(gè)JVM里面。
3.3. 修改regionservers
指定hbase的主從,和hadoop的slaves文件配置一樣 將文件修改為
slave1
slave2注:上面的為集群的主機(jī)名稱
在一臺(tái)機(jī)器上(最好是master)做完這些配置之后,我們使用scp命令將這些配置傳輸?shù)狡渌麢C(jī)器上。 輸入: hbase環(huán)境傳輸
scp -r /opt/hbase root@slave1:/opt
scp -r /opt/hbase root@slave2:/opt
傳輸之后,在主節(jié)點(diǎn)啟動(dòng)集群。
4. 啟動(dòng)hbase
在成功啟動(dòng)Hadoop、zookeeper之后 切換到HBase目錄下
cd /opt/hbase/hbase1.2/bin
輸入:
start-hbase.sh
啟動(dòng)成功之后,可以使用jps命令在各個(gè)機(jī)器上查看是否成功 可以在瀏覽器輸入: ip+16010 端口查看
http://master:16010/master-status
若成功顯示該界面,則啟動(dòng)成功。
七、Mysql安裝
因?yàn)镠ive的默認(rèn)元數(shù)據(jù)是Mysql,所以先要安裝Mysql。Mysql有兩種安裝模式,可自行選擇。
1. yum安裝mysql
首先查看mysql 是否已經(jīng)安裝
輸入:
rpm -qa | grep mysql
如果已經(jīng)安裝,想刪除的話輸入:普通刪除命令:
強(qiáng)力刪除命令:
依賴文件也會(huì)刪除
安裝mysql輸入:
安裝成功后,輸入 service mysqld start 啟動(dòng)服務(wù)
輸入之后直接回車(默認(rèn)是沒(méi)有密碼的)然后再輸入mysql -u root -p通過(guò)授權(quán)法更改遠(yuǎn)程連接權(quán)限輸入: mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;注:第一個(gè)'root'是用戶名,第二個(gè)'%'是所有的ip都可以遠(yuǎn)程訪問(wèn),第三個(gè)'123456'表示 用戶密碼 如果不常用 就關(guān)閉掉
use mysql;
update user set password=passworD("123456") where user='root';輸入:flush privileges;
可以使用navcat之類的工具測(cè)試是否能正確連接
八、Hive環(huán)境安裝和配置
1. 文件準(zhǔn)備
2. 環(huán)境配置(省略,前期已經(jīng)做過(guò)了)
編輯 /etc/profile 文件輸入:
添加:
注:實(shí)際配置以自己的為準(zhǔn)!輸入:
使配置生效
3. 配置更改
3.1. 新建文件夾
在修改配置文件之前,需要先在root目錄下建立一些文件夾。
新建完該文件之后,需要讓hadoop新建/root/hive/warehouse 和 /root/hive/ 目錄。執(zhí)行命令:
給剛才新建的目錄賦予讀寫(xiě)權(quán)限,執(zhí)行命令:
檢查這兩個(gè)目錄是否成功創(chuàng)建輸入:
可以看到已經(jīng)成功創(chuàng)建
3.2. 修改hive-site.xml
切換到 /opt/hive/hive2.1/conf 目錄下將hive-default.xml.template 拷貝一份,并重命名為hive-site.xml然后編輯hive-site.xml文件
編輯hive-site.xml文件,在 中添加:
然后將配置文件中所有的
更改為 /opt/hive/tmp (如果沒(méi)有該文件則創(chuàng)建),并將此文件夾賦予讀寫(xiě)權(quán)限,將
更改為 root
注: 由于hive-site.xml 文件中的配置過(guò)多,可以通過(guò)FTP將它下載下來(lái)進(jìn)行編輯。也可以直接配置自己所需的,其他的可以刪除。 MySQL的連接地址中的master是主機(jī)的別名,可以換成ip。
3.3. 修改 hive-env.sh
修改hive-env.sh 文件,沒(méi)有就復(fù)制 hive-env.sh.template ,并重命名為hive-env.sh在這個(gè)配置文件中添加
3.4. 添加 數(shù)據(jù)驅(qū)動(dòng)包
由于Hive 默認(rèn)自帶的數(shù)據(jù)庫(kù)是使用mysql,所以這塊就是用mysql將mysql 的驅(qū)動(dòng)包 上傳到 /opt/hive/hive2.1/lib
cp /home/chenjian/mysql-connector-java-5.1.41.jar /opt/hive/hive2.1/lib/
4. Hive Shell 測(cè)試
在成功啟動(dòng)Hadoop之后切換到Hive目錄下輸入:
執(zhí)行成功之后,可以看到hive數(shù)據(jù)庫(kù)和一堆表已經(jīng)創(chuàng)建成功了
進(jìn)入hive (確保hadoop以及成功啟動(dòng))輸入:
hive
進(jìn)入hive 之后
做一些簡(jiǎn)單的操作
新建一個(gè)庫(kù),然后在建一張表
基本操作和普通的關(guān)系型數(shù)據(jù)庫(kù)差不多
創(chuàng)建庫(kù):
create database db_chenjian;
創(chuàng)建表:
create table db_chenjian.student(id int,name string) row format delimited fields terminated by ' ';
4.3. 加載數(shù)據(jù)新打開(kāi)一個(gè)窗口因?yàn)閔ive 不支持寫(xiě),所以添加數(shù)據(jù)使用load加載文本獲取。新建一個(gè)文本
編輯該文本添加數(shù)據(jù)輸入:
添加數(shù)據(jù):中間的空格符使用Tab建
說(shuō)明: 文本可以在Windows上面新建,然后通過(guò)ftp上傳到linux中,需要注意文本的格式為unix 格式。
切換到hive shell加載數(shù)據(jù)輸入:
4.4. 查詢?cè)摂?shù)據(jù)輸入:
select * from db_chenjian.student;
九、安裝配置kafka
1. 文件準(zhǔn)備
將下載下來(lái)的kafka 的安裝文件進(jìn)行解壓 在linux上輸入:
tar -zxvf kafka_2.11-1.0.0.tgz
然后移動(dòng)到/opt/kafka里面,沒(méi)有就新建,
輸入
mkdir /opt/kafka
mv kafka_2.12-1.0.0 /opt/kafka/kafka1.0.0
2. 環(huán)境配置(省略,前期已經(jīng)做過(guò)了)
3. 修改配置文件
修改master機(jī)器配置文件 config/server.properties
broker.id=0 標(biāo)示符(多臺(tái)服務(wù)器標(biāo)示符0,1,2,3,...依次增長(zhǎng))
host.name=master 綁定的主機(jī)
log.dirs= /opt/kafka/kafka1.0.0/kafka-logs 數(shù)據(jù)保存的位置
log.retention.hours=168 數(shù)據(jù)的保留時(shí)間
zookeeper.connect=master:2181,slave1:2181,slave2:2181
將本機(jī)kafka拷貝至其他機(jī)器,此處只選用了兩臺(tái)機(jī)器master和slave1,執(zhí)行下面的命令:
scp -r /opt/kafka/ root@slave1:/opt/
修改slave1配置文件 config/server.properties
broker.id=1 標(biāo)示符(多臺(tái)服務(wù)器標(biāo)示符0,1,2,3,...依次增長(zhǎng))
host.name=slave1 綁定的主機(jī)
log.dirs= /opt/kafka/kafka1.0.0/kafka-logs 數(shù)據(jù)保存的位置
log.retention.hours=168 數(shù)據(jù)的保留時(shí)間
zookeeper.connect=master:2181,slave1:2181,slave2:2181
啟動(dòng)kafka
a.啟動(dòng)zookeeper集群
b.啟動(dòng)服務(wù)的命令(兩臺(tái)機(jī)器都執(zhí)行)
nohup /opt/kafka/kafka1.0.0/bin/kafka-server-start.sh /opt/kafka/kafka1.0.0/config/server.properties &
c.創(chuàng)建主題
/opt/kafka/kafka1.0.0/bin/kafka-topics.sh --create --zookeeper master:2181,slave1:2181 --replication-factor 1 --partitions 1 --topic chenjian
d.查看當(dāng)前有哪些主題:
/opt/kafka/kafka1.0.0/bin/kafka-topics.sh --list --zookeeper master:2181,slave1:2181,slave2:2181
4. 測(cè)試kafka
4.1. 模擬發(fā)送數(shù)據(jù)
/opt/kafka/kafka1.0.0/bin/kafka-console-producer.sh --broker-list slave1:9092,slave2:9092 --topic chenjian
4.2. 消費(fèi)數(shù)據(jù)
kafka-console-consumer.sh --zookeeper master:2181,slave1:2181,slave2:2181 --from-beginning --topic chenjian
在模擬發(fā)送數(shù)據(jù)窗口輸入,就會(huì)看到在消費(fèi)端有相應(yīng)的數(shù)據(jù)。 springboot集成kafka可以參看哥哥以前的文章建哥手把手系列之springboot整合kafka
耐得住寂寞,才能守得住繁華!
聯(lián)系客服