Hadoop+HBase+Spark+Hive環(huán)境搭建

摘要:大數(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ù)【安裝包】獲取

大數(shù)據(jù)學(xué)堂

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)境變量

最后,需要讓該環(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)程

hadoop成功啟動(dòng)后的進(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)程


主節(jié)點(diǎn)進(jìn)程

從節(jié)點(diǎ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ù)近似值:

Spark Pi計(jì)算結(jié)果

在主機(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~!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事?!?“怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容