摘要:大數(shù)據(jù)門檻較高,僅僅環(huán)境的搭建可能就要耗費(fèi)我們大量的精力,本文總結(jié)了作者是如何搭建大數(shù)據(jù)環(huán)境的(單機(jī)版和集群版),希望能幫助學(xué)弟學(xué)妹們更快地走上大數(shù)據(jù)學(xué)習(xí)之路。
0. 準(zhǔn)備安裝包
本文所需的系統(tǒng)鏡像、大數(shù)據(jù)軟件安裝包、開(kāi)發(fā)環(huán)境軟件安裝包等都可以在我的云盤(pán)中下載。
鏈接:系統(tǒng)鏡像和各種大數(shù)據(jù)軟件
密碼:關(guān)注公眾號(hào)【大數(shù)據(jù)學(xué)堂】回復(fù)【安裝包】獲取
1. Windows下安裝Ubuntu雙系統(tǒng)
Hadoop等大數(shù)據(jù)開(kāi)源框架是不支持Windows系統(tǒng)的,所以需要先安裝一個(gè)Linux雙系統(tǒng)。當(dāng)然,如果你有一臺(tái)單獨(dú)的電腦用來(lái)安裝Ubuntu系統(tǒng),就不需要安裝雙系統(tǒng)了,或者如果電腦內(nèi)存足夠>=12G,可以利用VmWare創(chuàng)建Ubuntu虛擬機(jī)。
雙系統(tǒng)安裝
請(qǐng)參考安裝指南:
第一步:制定系統(tǒng)啟動(dòng)U盤(pán)
第二步:安裝雙系統(tǒng)
2. 搭建Hadoop平臺(tái)
Hadoop是Apache 公司開(kāi)發(fā)的一款可靠的、可擴(kuò)展性的、分布式計(jì)算的開(kāi)源軟件。以Hadoop分布式文件系統(tǒng)(HDFS)和分布式運(yùn)算編程框架(MapReduce)為核心,允許在集群服務(wù)器上使用簡(jiǎn)單的編程模型對(duì)大數(shù)據(jù)集進(jìn)行分布式處理。下面,請(qǐng)跟著作者一步步搭建自己的Hadoop平臺(tái)吧。
2.1更新源
在bash終端中運(yùn)行如下shell指令,設(shè)置root用戶密碼,并切換到root用戶
#設(shè)置root密碼
sudo passwd
#切換到root用戶
su root
更新源
apt-get update
安裝vim編譯器
apt-get install vim
備份原始的官方源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
刪除原始的官方源
rm /etc/apt/sources.list
運(yùn)行如下shell命令,重新創(chuàng)建sources.list文件
vim /etc/apt/sources.list
按 i 進(jìn)入vim的編輯模式,復(fù)制下面的清華源到sources.list文件中,然后按 esc 退出編輯模式,最后輸入:+wq ,按回車保存(也可以按shift + zz 進(jìn)行保存)。
# 默認(rèn)注釋了源碼鏡像以提高 apt update 速度,如有需要可自行取消注釋
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful-security main restricted universe multiverse
# 預(yù)發(fā)布軟件源,不建議啟用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ artful-proposed main restricted universe multiverse
運(yùn)行如下shell命令,完成源的更新
apt-get update
2.2 安裝SSH、配置SSH無(wú)密碼登陸
Ubuntu 默認(rèn)已安裝了 SSH client,此外還需要安裝 SSH server:
sudo apt-get install openssh-server
安裝后,修改sshd_config配置
vim /etc/ssh/sshd_config
在文件中設(shè)置如下屬性:(按 / 可以進(jìn)入搜索模式,按esc退出搜索模式)
PubkeyAuthentication yes
PermitRootLogin yes
重啟ssh服務(wù)
sudo /etc/init.d/ssh restart
重啟后,可以使用如下命令登陸本機(jī),但此時(shí)需要密碼才能登陸:
ssh localhost
首先退出剛才的 ssh,就回到了我們?cè)鹊慕K端窗口,然后利用 ssh-keygen 生成密鑰,并將密鑰加入到授權(quán)中:
exit # 退出剛才的 ssh localhost
cd ~/.ssh/ # 若沒(méi)有該目錄,請(qǐng)先執(zhí)行一次ssh localhost
ssh-keygen -t rsa # 會(huì)有提示,都按回車就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授權(quán)
在 Linux 系統(tǒng)中,~ 代表的是用戶的主文件夾(root用戶例外),即 “/home/用戶名” 這個(gè)目錄,如你的用戶名為 ubuntu,則 ~ 就代表 “/home/ubuntu/”。 如果是root用戶則~代表/root,此外,命令中的 # 后面的文字是注釋,只需要輸入前面命令即可。
此時(shí)再用 ssh localhost 命令,無(wú)需輸入密碼就可以直接登陸了。
2.3 安裝JAVA環(huán)境
Java環(huán)境推薦使用 Oracle 的 JDK,首先,準(zhǔn)備好文件 jdk-8u162-linux-x64.tar.gz,然后將文件移到/usr/local目錄下:
mv jdk-8u162-linux-x64.tar.gz /usr/local
解壓文件
tar -zxvf jdk-8u162-linux-x64.tar.gz
重命名文件夾為java
mv jdk-1.8.0_162 java
用vim打開(kāi)/etc/profile文件(Linux下配置系統(tǒng)環(huán)境變量的文件)
vim /etc/profile
按i進(jìn)入編輯模式,在文件末尾添加如下JAVA環(huán)境變量
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
添加環(huán)境變量后,結(jié)果如下圖所示,按 esc 退出編輯模式,然后輸入:+wq ,按回車保存(也可以按shift + zz 進(jìn)行保存)。
最后,需要讓該環(huán)境變量生效,執(zhí)行如下代碼:
source /etc/profile
檢驗(yàn)JAVA是否安裝成功
echo $JAVA_HOME # 檢驗(yàn)變量值
java -version
java
javac
如果設(shè)置正確的話,java -version 會(huì)輸出 java 的版本信息,java 和 javac 會(huì)輸出命令的使用指導(dǎo)。
2.4 安裝Hadoop
下載 hadoop-2.7.6.tar.gz 文件,然后將文件移到/usr/local目錄下
mv hadoop-2.7.6.tar.gz /usr/local
解壓
tar -zxvf hadoop-2.7.6.tar.gz
文件夾重命名為hadoop
mv hadoop-2.7.6 hadoop
配置環(huán)境變量,打開(kāi)文件/etc/profile,添加如下Hadoop環(huán)境變量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
同樣,需要讓該環(huán)境變量生效,執(zhí)行如下代碼:
source /etc/profile
輸入如下命令來(lái)檢查 Hadoop 是否可用,成功則會(huì)顯示 Hadoop 版本信息:
hadoop version
2.5 Hadoop配置(單機(jī)偽分布式模式)
Hadoop 可以在單節(jié)點(diǎn)上以偽分布式的方式運(yùn)行,Hadoop 進(jìn)程以分離的 Java 進(jìn)程來(lái)運(yùn)行,節(jié)點(diǎn)既作為 NameNode 也作為 DataNode,同時(shí),讀取的是 HDFS 中的文件。
修改配置文件 core-site.xml (gedit /usr/local/hadoop/etc/hadoop/core-site.xml),將當(dāng)中的
<configuration>
</configuration>
修改為下面配置:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
同樣的,修改配置文件 hdfs-site.xml(gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml):
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
修改文件 hadoop-env.sh (gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh),在文件開(kāi)始處添加Hadoop和Java環(huán)境變量。
export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin
Hadoop配置文件說(shuō)明
Hadoop 的運(yùn)行方式是由配置文件決定的(運(yùn)行 Hadoop 時(shí)會(huì)讀取配置文件),偽分布式只需要配置 fs.defaultFS 和 dfs.replication 就可以運(yùn)行(官方教程如此),不過(guò)若沒(méi)有配置 hadoop.tmp.dir 參數(shù),則默認(rèn)使用的臨時(shí)目錄為 /tmp/hadoo-hadoop,而這個(gè)目錄在重啟時(shí)有可能被系統(tǒng)清理掉,導(dǎo)致必須重新執(zhí)行 format 才行。所以我們進(jìn)行了設(shè)置,同時(shí)也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來(lái)的步驟中可能會(huì)出錯(cuò)。
配置完成后,執(zhí)行 NameNode 的格式化:
/usr/local/hadoop/bin/hdfs namenode -format
啟動(dòng)hadoop
./usr/local/hadoop/sbin/start-all.sh
成功啟動(dòng)后,運(yùn)行jps命令
source /etc/profile
jps
如果安裝成功,則會(huì)出現(xiàn)如下如下進(jìn)程
成功啟動(dòng)后,可以訪問(wèn) Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件。
2.6 Hadoop配置(集群模式)
2.6.1 設(shè)置靜態(tài)IP(以主節(jié)點(diǎn)為例)
編輯文件/etc/network/interfaces
vim /etc/network/interfaces
在文件后面添加如下配置信息(eth0是網(wǎng)卡名,需要根據(jù)實(shí)際情況更改)
auto eth0 #網(wǎng)卡名
iface eth0 inet static
address 192.168.1.2 #靜態(tài)IP(可根據(jù)實(shí)際情況自由設(shè)置)
netmask 255.255.255.0 #子網(wǎng)掩碼
gateway 192.168.1.1 #網(wǎng)關(guān)
dns-nameservers 192.168.1.1 #DNS服務(wù)器地址,與網(wǎng)關(guān)相同即可
編輯文件/etc/resolve.conf
vim /etc/resolve.conf
在文件中添加如下配置信息
nameserver 192.168.1.1
此dns在系統(tǒng)重啟后會(huì)失效,編輯文件/etc/resolvconf/resolv.conf.d/base
vim /etc/resolvconf/resolv.conf.d/base
添加如下內(nèi)容,從而永久保存DNS配置
nameserver 192.168.1.1
運(yùn)行如下命令重啟網(wǎng)絡(luò)
/etc/init.d/networking restart
如果重啟后無(wú)效,則重啟系統(tǒng)。
重啟后如果發(fā)現(xiàn)找不到網(wǎng)卡,則啟用系統(tǒng)托管網(wǎng)卡
vim /etc/NetworkManager/NetworkManager.conf
修改
managed=false
為
managed=true
運(yùn)行如下命令重啟網(wǎng)絡(luò)
/etc/init.d/networking restart
如果重啟后無(wú)效,則重啟系統(tǒng)。
2.6.2 配置hosts文件(每臺(tái)主機(jī)都要配置)
修改主機(jī)名
vim /etc/hostname
提示:主節(jié)點(diǎn)設(shè)置為master,從節(jié)點(diǎn)設(shè)置為slave1、slave2等等。
編輯文件/etc/hosts
vim /etc/hosts
將以下數(shù)據(jù)復(fù)制進(jìn)入集群的各個(gè)主機(jī)中
192.168.1.2 master
192.168.1.11 slave1
注意:若再增加一個(gè)從機(jī),則添加slave2的信息
使用以下指令在master主機(jī)中進(jìn)行測(cè)試,可使用類似指令在slave1上測(cè)試:
ping slave1
如果ping的通,說(shuō)明網(wǎng)絡(luò)連接正常,否則請(qǐng)檢查網(wǎng)絡(luò)連接或者IP信息是否正確。
2.6.3 SSH無(wú)密碼登陸節(jié)點(diǎn)(master上配置)
這個(gè)操作是要讓 master 節(jié)點(diǎn)可以無(wú)密碼 SSH 登陸到各個(gè) slave 節(jié)點(diǎn)上。
首先生成 master 節(jié)點(diǎn)的公匙,在 master節(jié)點(diǎn)的終端中執(zhí)行(因?yàn)楦倪^(guò)主機(jī)名,所以還需要?jiǎng)h掉原有的再重新生成一次):
cd ~/.ssh # 如果沒(méi)有該目錄,先執(zhí)行一次ssh localhost
rm ./id_rsa* # 刪除之前生成的公匙(如果有)
ssh-keygen -t rsa # 一直按回車就可以
讓 master 節(jié)點(diǎn)需能無(wú)密碼 SSH 本機(jī),在 master 節(jié)點(diǎn)上執(zhí)行:
cat ./id_rsa.pub >> ./authorized_keys
完成后可執(zhí)行 ssh master 驗(yàn)證一下(可能需要輸入 yes,成功后執(zhí)行 exit 返回原來(lái)的終端)。接著在 master 節(jié)點(diǎn)將上公匙傳輸?shù)?slave1節(jié)點(diǎn):
scp ~/.ssh/id_rsa.pub root@slave1:/root/
scp 是 secure copy 的簡(jiǎn)寫(xiě),用于在 Linux 下進(jìn)行遠(yuǎn)程拷貝文件,類似于 cp 命令,不過(guò) cp 只能在本機(jī)中拷貝。執(zhí)行 scp 時(shí)會(huì)要求輸入 slave1 上 root 用戶的密碼。
接著在 slave1 節(jié)點(diǎn)上,將 ssh 公匙加入授權(quán)
mkdir /root/.ssh # 如果不存在該文件夾需先創(chuàng)建,若已存在則忽略
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
rm /root/id_rsa.pub # 用完就可以刪掉了
如果有其他 slave 節(jié)點(diǎn),也要執(zhí)行將 master 公匙傳輸?shù)?slave 節(jié)點(diǎn)、在 slave 節(jié)點(diǎn)上加入授權(quán)這兩步。
這樣,在 master 節(jié)點(diǎn)上就可以無(wú)密碼 SSH 到各個(gè) slave 節(jié)點(diǎn)了,可在 master 節(jié)點(diǎn)上執(zhí)行如下命令進(jìn)行檢驗(yàn):
ssh root@slave1
如果不需要密碼,則配置成功。
2.6.4 修改Hadoop配置文件(master上配置)
修改配置文件 core-site.xml (gedit /usr/local/hadoop/etc/hadoop/core-site.xml),將當(dāng)中的
<configuration>
</configuration>
修改為下面配置:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
同樣的,修改配置文件 hdfs-site.xml(gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml):
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
修改文件 mapred-site.xml (可能需要先重命名,默認(rèn)文件名為 mapred-site.xml.template),然后配置修改如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</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>
配置yarn-site.xml(gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml)
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>10240</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
修改文件 hadoop-env.sh (gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh),在文件開(kāi)始處添加Hadoop和Java環(huán)境變量。
export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin
配置slaves(gedit /usr/local/hadoop/etc/hadoop/slaves),刪除默認(rèn)的localhost,增加從節(jié)點(diǎn):
slave1
注意:若再增加一個(gè)從機(jī),再添加slave2
配置好后,將 master 上的 /usr/local/hadoop 文件夾復(fù)制到各個(gè)節(jié)點(diǎn)上。
sudo rm -rf /usr/local/hadoop/tmp # 刪除 Hadoop 臨時(shí)文件
sudo rm -rf /usr/local/hadoop/logs # 刪除日志文件
scp -r /usr/local/hadoop slave1:/usr/local
注意:每臺(tái)從機(jī)上需要配置Hadoop的環(huán)境變量
在master節(jié)點(diǎn)上啟動(dòng)hadoop
/usr/local/hadoop/bin/hdfs namenode -format
/usr/local/hadoop/sbin/start-all.sh
成功啟動(dòng)后,運(yùn)行jps命令
source /etc/profile
jps
如果安裝成功,master節(jié)點(diǎn)會(huì)有NameNode進(jìn)程,slave節(jié)點(diǎn)會(huì)有DataNode進(jìn)程。
成功啟動(dòng)后,可以訪問(wèn) Web 界面 http://master:50070 查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件。
3. 安裝HBase數(shù)據(jù)庫(kù)
HBase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),源于Google的一篇論文《BigTable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)》。HBase以表的形式存儲(chǔ)數(shù)據(jù),表有行和列組成,列劃分為若干個(gè)列族/列簇(column family)。欲了解HBase的官方資訊,請(qǐng)?jiān)L問(wèn)HBase官方網(wǎng)站。HBase的運(yùn)行有三種模式:?jiǎn)螜C(jī)模式、偽分布式模式、分布式模式。
單機(jī)模式:在一臺(tái)計(jì)算機(jī)上安裝和使用HBase,不涉及數(shù)據(jù)的分布式存儲(chǔ);偽分布式模式:在一臺(tái)計(jì)算機(jī)上模擬一個(gè)小的集群;分布式模式:使用多臺(tái)計(jì)算機(jī)實(shí)現(xiàn)物理意義上的分布式存儲(chǔ)。這里出于學(xué)習(xí)目的,我們只重點(diǎn)討論偽分布式模式。
3.1. HBase安裝
下載 hbase-2.0.0-bin.tar.gz 文件,并將文件移到/usr/local目錄下
mv hbase-2.0.0-bin.tar.gz /usr/local
解壓
tar -zxvf hbase-2.0.0-bin.tar.gz
文件夾重命名
mv hbase-2.0.0 hbase
將hbase下的bin目錄添加到path中,這樣,啟動(dòng)hbase就無(wú)需到/usr/local/hbase目錄下,大大的方便了hbase的使用。教程下面的部分還是切換到了/usr/local/hbase目錄操作,有助于初學(xué)者理解運(yùn)行過(guò)程,熟練之后可以不必切換。
編輯/etc/profile文件
vim /etc/profile
在/etc/profile文件尾行添加如下內(nèi)容:
export HBASE_HOME=/usr/local/hbase
export PATH=$HBASE_HOME/bin:$PATH
export HBASE_MANAGES_ZK=true
編輯完成后,按 esc 退出編輯模式,然后輸入:+wq ,按回車保存(也可以按shift + zz 進(jìn)行保存),最后再執(zhí)行source命令使上述配置在當(dāng)前終端立即生效,命令如下:
source /etc/profile
查看HBase版本,確定hbase安裝成功,命令如下:
hbase version
3.2. HBase偽分布模式配置
配置/usr/local/hbase/conf/hbase-site.xml,打開(kāi)并編輯hbase-site.xml,命令如下:
gedit /usr/local/hbase/conf/hbase-site.xml
在啟動(dòng)HBase前需要設(shè)置屬性hbase.rootdir,用于指定HBase數(shù)據(jù)的存儲(chǔ)位置,因?yàn)槿绻辉O(shè)置的話,hbase.rootdir默認(rèn)為/tmp/hbase-${user.name},這意味著每次重啟系統(tǒng)都會(huì)丟失數(shù)據(jù)。此處設(shè)置為HBase安裝目錄下的hbase-tmp文件夾即(/usr/local/hbase/hbase-tmp),添加配置如下:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
打開(kāi)文件(gedit /usr/local/hbase/conf/hbase-env.sh)添加java環(huán)境變量
export JAVA_HOME=/usr/local/java
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:/usr/local/hbase/bin
export HBASE_MANAGES_ZK=true
3.3 HBase集群模式配置
修改master節(jié)點(diǎn)的配置文件hbase-site.xml(gedit /usr/local/hbase/conf/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</value>
</property>
<property>
<name>hbase.temp.dir</name>
<value>/usr/local/hbase/tmp</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hbase/tmp/zookeeper</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
</configuration>
注意:若再增加一個(gè)從機(jī),hbase.zookeeper.quorum 添加slave2
修改配置文件regionservers(gedit /usr/local/hbase/conf/regionservers),刪除里面的localhosts,改為:
master
slave1
若再增加一個(gè)從機(jī),添加slave2
傳送Hbase至其它slave節(jié)點(diǎn)(從機(jī)不需下載安裝包,由主機(jī)傳送過(guò)去即可,從機(jī)環(huán)境變量需要配置),即將配置好的hbase文件夾傳送到各個(gè)節(jié)點(diǎn)對(duì)應(yīng)位置上:
scp -r /usr/local/hbase root@slave1:/usr/local/
注意:每臺(tái)從機(jī)上需要配置HBase的環(huán)境變量
3.4 HBase集群模式配置(使用外置的zookeeper)
在3.3的基礎(chǔ)上,修改/etc/profile、/usr/local/hbase/conf/hbase-env.sh文件的配置
export HBASE_MANAGES_ZK=false
修改/usr/local/hbase/conf/hbase-site.xml文件的配置,將hbase.zookeeper.quorum屬性設(shè)置為zookpeer的各個(gè)節(jié)點(diǎn)
<property>
<name>hbase.zookeeper.quorum</name>
<value>zk1:2181,zk2:2181,zk3:2181</value>
</property>
將/etc/profile和/usr/local/hbase/conf文件夾復(fù)制到regionserver節(jié)點(diǎn)
scp /etc/profile slave1:/etc
scp -r /usr/local/hbase/conf/ slave1:/usr/local/hbase
scp /etc/profile slave2:/etc
scp -r /usr/local/hbase/conf/ slave2:/usr/local/hbase
scp /etc/profile slave3:/etc
scp -r /usr/local/hbase/conf/ slave3:/usr/local/hbase
3.5 測(cè)試運(yùn)行
首先切換目錄至HBase安裝目錄/usr/local/hbase;再啟動(dòng)HBase。命令如下:
/usr/local/hadoop/sbin/start-all.sh #啟動(dòng)hadoop,如果已啟動(dòng),則不用執(zhí)行該命令
/usr/local/hbase/start-hbase.sh #啟動(dòng)hbase
hbase shell #進(jìn)入hbase shell,如果可以進(jìn)入說(shuō)明HBase安裝成功了
停止HBase運(yùn)行,命令如下:
bin/stop-hbase.sh
如果hbase啟動(dòng)成功,則使用jps命令會(huì)出現(xiàn)如下進(jìn)程
4. 安裝Spark內(nèi)存計(jì)算引擎
Apache Spark 是一個(gè)新興的大數(shù)據(jù)處理通用引擎,提供了分布式的內(nèi)存抽象。Spark 最大的特點(diǎn)就是快,可比 Hadoop MapReduce 的處理速度快 100 倍。Spark基于Hadoop環(huán)境,Hadoop YARN為Spark提供資源調(diào)度框架,Hadoop HDFS為Spark提供底層的分布式文件存儲(chǔ)。
4.1. Spark安裝
Spark的安裝過(guò)程較為簡(jiǎn)單,在已安裝好 Hadoop 的前提下,經(jīng)過(guò)簡(jiǎn)單配置即可使用,首先下載 spark-2.3.0-bin-hadoop2.7.tgz 文件,并將文件移到/usr/local目錄下
mv spark-2.3.0-bin-hadoop2.7.tgz /usr/local
解壓
cd /usr/local
tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz
文件夾重命名
mv spark-2.3.0 spark
編輯/etc/profile文件,添加環(huán)境變量
vim /etc/profile
在/etc/profile文件尾行添加如下內(nèi)容:
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
編輯完成后,保存退出,再執(zhí)行source命令使上述配置在當(dāng)前終端立即生效,命令如下:
source /etc/profile
4.2. Spark單機(jī)配置
配置文件spark-env.sh
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
編輯spark-env.sh文件(vim ./conf/spark-env.sh),在第一行添加以下配置信息:
export JAVA_HOME=/usr/local/java
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export HADOOP_HDFS_HOME=/usr/local/hadoop
export SPARK_HOME=/usr/local/spark
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
SPARK_MASTER_WEBUI_PORT=8079
4.3. Spark集群配置
在master上配置文件spark-env.sh
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
編輯spark-env.sh文件(vim ./conf/spark-env.sh),在第一行添加以下配置信息:
export JAVA_HOME=/usr/local/java
export SCALA_HOME=/usr/local/scala
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export HADOOP_HDFS_HOME=/usr/local/hadoop
export SPARK_HOME=/usr/local/spark
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_HOST=master
export SPARK_WORKER_CORES=2
export SPARK_WORKER_PORT=8901
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=2g
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export SPARK_MASTER_WEBUI_PORT=8079
保存并刷新配置:
source spark-env.sh
配置從機(jī)列表:
cp slaves.template slaves
gedit slaves
在最后加上:
master
slave1
把主機(jī)的spark文件夾復(fù)制到從機(jī),復(fù)制腳本如下:
scp -r /usr/local/spark root@slave1:/usr/local
注意:每臺(tái)從機(jī)上需要配置Spark的環(huán)境變量
4.4 驗(yàn)證Spark安裝和配置
通過(guò)運(yùn)行Spark自帶的示例,驗(yàn)證Spark是否安裝成功。
cd /usr/local/spark
./sbin/start-all.sh
bin/run-example SparkPi 2>&1 | grep "Pi is"
運(yùn)行結(jié)果如下圖所示,可以得到π 的 14位小數(shù)近似值:
在主機(jī)的瀏覽器輸入http://master:8079(集群模式)或者http://localhost:8079(單機(jī)模式)就可以看到有兩個(gè)節(jié)點(diǎn)在spark集群上。
5. 安裝hive
Hive是一個(gè)架構(gòu)在Hadoop之上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)工具,用來(lái)處理結(jié)構(gòu)化數(shù)據(jù),為大數(shù)據(jù)查詢和分析提供方便。最初,Hive是由Facebook開(kāi)發(fā),后來(lái)由Apache軟件基金會(huì)開(kāi)發(fā),并作為進(jìn)一步將它作為名義下Apache Hive為一個(gè)開(kāi)源項(xiàng)目。Hive 不是一個(gè)關(guān)系數(shù)據(jù)庫(kù),也不是一個(gè)設(shè)計(jì)用于聯(lián)機(jī)事務(wù)處(OLTP)實(shí)時(shí)查詢和行級(jí)更新的語(yǔ)言。簡(jiǎn)單的說(shuō),Hive就是在Hadoop上架了一層SQL接口,可以將SQL翻譯成MapReduce去Hadoop上執(zhí)行,這樣就使得數(shù)據(jù)開(kāi)發(fā)和分析人員很方便的使用SQL來(lái)完成海量數(shù)據(jù)的統(tǒng)計(jì)和分析,而不必使用編程語(yǔ)言開(kāi)發(fā)MapReduce那么麻煩。
5.1. Hive安裝
下載 apache-hive-1.2.2-bin.tar.gz 文件,并將文件移到/usr/local目錄下
mv apache-hive-1.2.2-bin.tar.gz /usr/local
解壓
tar -zxvf apache-hive-1.2.2-bin.tar.gz
文件夾重命名
mv apache-hive-1.2.2 hive
編輯/etc/profile文件,配置環(huán)境變量
vim /etc/profile
在/etc/profile文件尾行添加如下內(nèi)容:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
編輯完成后,保存退出,再執(zhí)行source命令使上述配置在當(dāng)前終端立即生效,命令如下:
source /etc/profile
5.2. 安裝并配置MySQL
我們采用MySQL數(shù)據(jù)庫(kù)保存Hive的元數(shù)據(jù),而不是采用Hive自帶的derby來(lái)存儲(chǔ)元數(shù)據(jù)。ubuntu下Mysql的安裝比較簡(jiǎn)單,直接運(yùn)行如下命令。在安裝過(guò)程中,會(huì)要求配置用戶名和密碼,這個(gè)一定要記住。
apt-get install mysql-server
啟動(dòng)并登陸mysql shell
service mysql start
mysql -u root -p #登陸shell界面
新建hive數(shù)據(jù)庫(kù)
#這個(gè)hive數(shù)據(jù)庫(kù)與hive-site.xml中l(wèi)ocalhost:3306/hive的hive對(duì)應(yīng),用來(lái)保存hive元數(shù)據(jù)
mysql> create database hive;
將hive數(shù)據(jù)庫(kù)的字符編碼設(shè)置為latin1(重要)
mysql> alter database hive character set latin1;
5.3. Hive配置
修改/usr/local/hive/conf下的hive-site.xml,執(zhí)行如下命令:
cd /usr/local/hive/conf
mv hive-default.xml.template hive-default.xml
上面命令是將hive-default.xml.template重命名為hive-default.xml,然后,使用vim編輯器新建一個(gè)配置文件hive-site.xml,命令如下:
cd /usr/local/hive/conf
vim hive-site.xml
在hive-site.xml中添加如下配置信息,其中:USERNAME和PASSWORD是MySQL的用戶名和密碼。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>USERNAME</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>PASSWORD</value>
<description>password to use against metastore database</description>
</property>
</configuration>
然后,按鍵盤(pán)上的“ESC”鍵退出vim編輯狀態(tài),再輸入:wq,保存并退出vim編輯器。由于Hive在連接MySQL時(shí)需要JDBC驅(qū)動(dòng),所以首先需要下載對(duì)應(yīng)版本的驅(qū)動(dòng),然后將驅(qū)動(dòng)移動(dòng)到/usr/local/hive/lib中。
#解壓
tar -zxvf mysql-connector-java-5.1.47.tar.gz
#將mysql-connector-java-5.1.47.tar.gz拷貝到/usr/local/hive/lib目錄下
cp mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/local/hive/lib
啟動(dòng)hive(啟動(dòng)hive之前,請(qǐng)先啟動(dòng)hadoop集群)。
./usr/local/hadoop/sbin/start-all.sh #啟動(dòng)hadoop,如果已經(jīng)啟動(dòng),則不用執(zhí)行該命令
hive #啟動(dòng)hive
5.4. Spark和Hive的整合
Hive的計(jì)算引擎默認(rèn)為MapReduce,如果想要用Spark作為Hive的計(jì)算引擎,可以參考文章編譯Spark源碼支持Hive并部署
6. 結(jié)語(yǔ)
本文介紹了大數(shù)據(jù)環(huán)境的搭建過(guò)程,旨在讓學(xué)弟學(xué)妹們少踩坑。后面,作者將為大家奉獻(xiàn)如何利用Java+Scala來(lái)開(kāi)發(fā)大數(shù)據(jù)應(yīng)用。如果覺(jué)得文章有用的話,別忘記點(diǎn)贊哦O(∩_∩)O~!