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

摘要:大數(shù)據(jù)門檻較高,僅僅環(huán)境的搭建可能就要耗費我們大量的精力,本文總結了作者是如何搭建大數(shù)據(jù)環(huán)境的(單機版和集群版),希望能幫助學弟學妹們更快地走上大數(shù)據(jù)學習之路。

0. 準備安裝包

本文所需的系統(tǒng)鏡像、大數(shù)據(jù)軟件安裝包、開發(fā)環(huán)境軟件安裝包等都可以在我的云盤中下載。
鏈接:系統(tǒng)鏡像和各種大數(shù)據(jù)軟件
密碼:關注公眾號【大數(shù)據(jù)學堂】回復【安裝包】獲取

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

1. Windows下安裝Ubuntu雙系統(tǒng)

Hadoop等大數(shù)據(jù)開源框架是不支持Windows系統(tǒng)的,所以需要先安裝一個Linux雙系統(tǒng)。當然,如果你有一臺單獨的電腦用來安裝Ubuntu系統(tǒng),就不需要安裝雙系統(tǒng)了,或者如果電腦內(nèi)存足夠>=12G,可以利用VmWare創(chuàng)建Ubuntu虛擬機。

雙系統(tǒng)安裝
請參考安裝指南:
第一步:制定系統(tǒng)啟動U盤
第二步:安裝雙系統(tǒng)

2. 搭建Hadoop平臺

Hadoop是Apache 公司開發(fā)的一款可靠的、可擴展性的、分布式計算的開源軟件。以Hadoop分布式文件系統(tǒng)(HDFS)和分布式運算編程框架(MapReduce)為核心,允許在集群服務器上使用簡單的編程模型對大數(shù)據(jù)集進行分布式處理。下面,請跟著作者一步步搭建自己的Hadoop平臺吧。

2.1更新源

在bash終端中運行如下shell指令,設置root用戶密碼,并切換到root用戶

#設置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

運行如下shell命令,重新創(chuàng)建sources.list文件

vim /etc/apt/sources.list

按 i 進入vim的編輯模式,復制下面的清華源到sources.list文件中,然后按 esc 退出編輯模式,最后輸入:+wq ,按回車保存(也可以按shift + zz 進行保存)。

# 默認注釋了源碼鏡像以提高 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

# 預發(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

運行如下shell命令,完成源的更新

apt-get update

2.2 安裝SSH、配置SSH無密碼登陸

Ubuntu 默認已安裝了 SSH client,此外還需要安裝 SSH server:

sudo apt-get install openssh-server

安裝后,修改sshd_config配置

vim /etc/ssh/sshd_config

在文件中設置如下屬性:(按 / 可以進入搜索模式,按esc退出搜索模式)

PubkeyAuthentication yes
PermitRootLogin yes

重啟ssh服務

sudo /etc/init.d/ssh restart

重啟后,可以使用如下命令登陸本機,但此時需要密碼才能登陸:

ssh localhost

首先退出剛才的 ssh,就回到了我們原先的終端窗口,然后利用 ssh-keygen 生成密鑰,并將密鑰加入到授權中:

exit                           # 退出剛才的 ssh localhost
cd ~/.ssh/                     # 若沒有該目錄,請先執(zhí)行一次ssh localhost
ssh-keygen -t rsa              # 會有提示,都按回車就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授權

在 Linux 系統(tǒng)中,~ 代表的是用戶的主文件夾(root用戶例外),即 “/home/用戶名” 這個目錄,如你的用戶名為 ubuntu,則 ~ 就代表 “/home/ubuntu/”。 如果是root用戶則~代表/root,此外,命令中的 # 后面的文字是注釋,只需要輸入前面命令即可。

此時再用 ssh localhost 命令,無需輸入密碼就可以直接登陸了。

2.3 安裝JAVA環(huán)境

Java環(huán)境推薦使用 Oracle 的 JDK,首先,準備好文件 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打開/etc/profile文件(Linux下配置系統(tǒng)環(huán)境變量的文件)

vim /etc/profile

按i進入編輯模式,在文件末尾添加如下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)境變量后,結果如下圖所示,按 esc 退出編輯模式,然后輸入:+wq ,按回車保存(也可以按shift + zz 進行保存)。


配置環(huán)境變量

最后,需要讓該環(huán)境變量生效,執(zhí)行如下代碼:

source /etc/profile

檢驗JAVA是否安裝成功

echo $JAVA_HOME     # 檢驗變量值
java -version
java
javac

如果設置正確的話,java -version 會輸出 java 的版本信息,java 和 javac 會輸出命令的使用指導。

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)境變量,打開文件/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

輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本信息:

hadoop version

2.5 Hadoop配置(單機偽分布式模式)

Hadoop 可以在單節(jié)點上以偽分布式的方式運行,Hadoop 進程以分離的 Java 進程來運行,節(jié)點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件。

修改配置文件 core-site.xml (gedit /usr/local/hadoop/etc/hadoop/core-site.xml),將當中的

<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),在文件開始處添加Hadoop和Java環(huán)境變量。

export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin
Hadoop配置文件說明

Hadoop 的運行方式是由配置文件決定的(運行 Hadoop 時會讀取配置文件),偽分布式只需要配置 fs.defaultFS 和 dfs.replication 就可以運行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 參數(shù),則默認使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統(tǒng)清理掉,導致必須重新執(zhí)行 format 才行。所以我們進行了設置,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯。

配置完成后,執(zhí)行 NameNode 的格式化:

/usr/local/hadoop/bin/hdfs namenode -format

啟動hadoop

./usr/local/hadoop/sbin/start-all.sh

成功啟動后,運行jps命令

source /etc/profile
jps

如果安裝成功,則會出現(xiàn)如下如下進程

hadoop成功啟動后的進程

成功啟動后,可以訪問 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件。

2.6 Hadoop配置(集群模式)

2.6.1 設置靜態(tài)IP(以主節(jié)點為例)

編輯文件/etc/network/interfaces

vim /etc/network/interfaces

在文件后面添加如下配置信息(eth0是網(wǎng)卡名,需要根據(jù)實際情況更改)

auto eth0 #網(wǎng)卡名
iface eth0 inet static
address 192.168.1.2 #靜態(tài)IP(可根據(jù)實際情況自由設置)
netmask 255.255.255.0 #子網(wǎng)掩碼
gateway 192.168.1.1 #網(wǎng)關
dns-nameservers 192.168.1.1 #DNS服務器地址,與網(wǎng)關相同即可

編輯文件/etc/resolve.conf

vim /etc/resolve.conf

在文件中添加如下配置信息

nameserver 192.168.1.1

此dns在系統(tǒng)重啟后會失效,編輯文件/etc/resolvconf/resolv.conf.d/base

vim /etc/resolvconf/resolv.conf.d/base

添加如下內(nèi)容,從而永久保存DNS配置

nameserver 192.168.1.1

運行如下命令重啟網(wǎng)絡

/etc/init.d/networking restart

如果重啟后無效,則重啟系統(tǒng)。

重啟后如果發(fā)現(xiàn)找不到網(wǎng)卡,則啟用系統(tǒng)托管網(wǎng)卡

vim /etc/NetworkManager/NetworkManager.conf

修改

managed=false

managed=true

運行如下命令重啟網(wǎng)絡

/etc/init.d/networking restart

如果重啟后無效,則重啟系統(tǒng)。

2.6.2 配置hosts文件(每臺主機都要配置)

修改主機名

vim /etc/hostname

提示:主節(jié)點設置為master,從節(jié)點設置為slave1、slave2等等。

編輯文件/etc/hosts

vim /etc/hosts

將以下數(shù)據(jù)復制進入集群的各個主機中

192.168.1.2     master
192.168.1.11    slave1

注意:若再增加一個從機,則添加slave2的信息

使用以下指令在master主機中進行測試,可使用類似指令在slave1上測試:

ping slave1

如果ping的通,說明網(wǎng)絡連接正常,否則請檢查網(wǎng)絡連接或者IP信息是否正確。

2.6.3 SSH無密碼登陸節(jié)點(master上配置)

這個操作是要讓 master 節(jié)點可以無密碼 SSH 登陸到各個 slave 節(jié)點上。

首先生成 master 節(jié)點的公匙,在 master節(jié)點的終端中執(zhí)行(因為改過主機名,所以還需要刪掉原有的再重新生成一次):

cd ~/.ssh               # 如果沒有該目錄,先執(zhí)行一次ssh localhost
rm ./id_rsa*            # 刪除之前生成的公匙(如果有)
ssh-keygen -t rsa       # 一直按回車就可以

讓 master 節(jié)點需能無密碼 SSH 本機,在 master 節(jié)點上執(zhí)行:

cat ./id_rsa.pub >> ./authorized_keys

完成后可執(zhí)行 ssh master 驗證一下(可能需要輸入 yes,成功后執(zhí)行 exit 返回原來的終端)。接著在 master 節(jié)點將上公匙傳輸?shù)?slave1節(jié)點:

scp ~/.ssh/id_rsa.pub root@slave1:/root/

scp 是 secure copy 的簡寫,用于在 Linux 下進行遠程拷貝文件,類似于 cp 命令,不過 cp 只能在本機中拷貝。執(zhí)行 scp 時會要求輸入 slave1 上 root 用戶的密碼。

接著在 slave1 節(jié)點上,將 ssh 公匙加入授權

mkdir /root/.ssh       # 如果不存在該文件夾需先創(chuàng)建,若已存在則忽略
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
rm /root/id_rsa.pub    # 用完就可以刪掉了

如果有其他 slave 節(jié)點,也要執(zhí)行將 master 公匙傳輸?shù)?slave 節(jié)點、在 slave 節(jié)點上加入授權這兩步。

這樣,在 master 節(jié)點上就可以無密碼 SSH 到各個 slave 節(jié)點了,可在 master 節(jié)點上執(zhí)行如下命令進行檢驗:

ssh root@slave1

如果不需要密碼,則配置成功。

2.6.4 修改Hadoop配置文件(master上配置)

修改配置文件 core-site.xml (gedit /usr/local/hadoop/etc/hadoop/core-site.xml),將當中的

<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 (可能需要先重命名,默認文件名為 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),在文件開始處添加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),刪除默認的localhost,增加從節(jié)點:

slave1

注意:若再增加一個從機,再添加slave2

配置好后,將 master 上的 /usr/local/hadoop 文件夾復制到各個節(jié)點上。

sudo rm -rf /usr/local/hadoop/tmp     # 刪除 Hadoop 臨時文件
sudo rm -rf /usr/local/hadoop/logs   # 刪除日志文件
scp -r /usr/local/hadoop slave1:/usr/local

注意:每臺從機上需要配置Hadoop的環(huán)境變量

在master節(jié)點上啟動hadoop

/usr/local/hadoop/bin/hdfs namenode -format
/usr/local/hadoop/sbin/start-all.sh

成功啟動后,運行jps命令

source /etc/profile
jps

如果安裝成功,master節(jié)點會有NameNode進程,slave節(jié)點會有DataNode進程。

成功啟動后,可以訪問 Web 界面 http://master:50070 查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件。

3. 安裝HBase數(shù)據(jù)庫

HBase是一個分布式的、面向列的開源數(shù)據(jù)庫,源于Google的一篇論文《BigTable:一個結構化數(shù)據(jù)的分布式存儲系統(tǒng)》。HBase以表的形式存儲數(shù)據(jù),表有行和列組成,列劃分為若干個列族/列簇(column family)。欲了解HBase的官方資訊,請訪問HBase官方網(wǎng)站。HBase的運行有三種模式:單機模式、偽分布式模式、分布式模式。
單機模式:在一臺計算機上安裝和使用HBase,不涉及數(shù)據(jù)的分布式存儲;偽分布式模式:在一臺計算機上模擬一個小的集群;分布式模式:使用多臺計算機實現(xià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中,這樣,啟動hbase就無需到/usr/local/hbase目錄下,大大的方便了hbase的使用。教程下面的部分還是切換到了/usr/local/hbase目錄操作,有助于初學者理解運行過程,熟練之后可以不必切換。
編輯/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 進行保存),最后再執(zhí)行source命令使上述配置在當前終端立即生效,命令如下:

source /etc/profile

查看HBase版本,確定hbase安裝成功,命令如下:

hbase version

3.2. HBase偽分布模式配置

配置/usr/local/hbase/conf/hbase-site.xml,打開并編輯hbase-site.xml,命令如下:

gedit /usr/local/hbase/conf/hbase-site.xml

在啟動HBase前需要設置屬性hbase.rootdir,用于指定HBase數(shù)據(jù)的存儲位置,因為如果不設置的話,hbase.rootdir默認為/tmp/hbase-${user.name},這意味著每次重啟系統(tǒng)都會丟失數(shù)據(jù)。此處設置為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>

打開文件(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é)點的配置文件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>

注意:若再增加一個從機,hbase.zookeeper.quorum 添加slave2

修改配置文件regionservers(gedit /usr/local/hbase/conf/regionservers),刪除里面的localhosts,改為:

master
slave1

若再增加一個從機,添加slave2

傳送Hbase至其它slave節(jié)點(從機不需下載安裝包,由主機傳送過去即可,從機環(huán)境變量需要配置),即將配置好的hbase文件夾傳送到各個節(jié)點對應位置上:

scp -r /usr/local/hbase root@slave1:/usr/local/

注意:每臺從機上需要配置HBase的環(huán)境變量

3.4 HBase集群模式配置(使用外置的zookeeper)

在3.3的基礎上,修改/etc/profile、/usr/local/hbase/conf/hbase-env.sh文件的配置

export HBASE_MANAGES_ZK=false

修改/usr/local/hbase/conf/hbase-site.xml文件的配置,將hbase.zookeeper.quorum屬性設置為zookpeer的各個節(jié)點

<property>
         <name>hbase.zookeeper.quorum</name>
         <value>zk1:2181,zk2:2181,zk3:2181</value>
</property>

將/etc/profile和/usr/local/hbase/conf文件夾復制到regionserver節(jié)點

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 測試運行

首先切換目錄至HBase安裝目錄/usr/local/hbase;再啟動HBase。命令如下:

/usr/local/hadoop/sbin/start-all.sh  #啟動hadoop,如果已啟動,則不用執(zhí)行該命令
/usr/local/hbase/start-hbase.sh     #啟動hbase
hbase shell                           #進入hbase shell,如果可以進入說明HBase安裝成功了

停止HBase運行,命令如下:

bin/stop-hbase.sh

如果hbase啟動成功,則使用jps命令會出現(xiàn)如下進程


主節(jié)點進程

從節(jié)點進程

4. 安裝Spark內(nèi)存計算引擎

Apache Spark 是一個新興的大數(shù)據(jù)處理通用引擎,提供了分布式的內(nèi)存抽象。Spark 最大的特點就是快,可比 Hadoop MapReduce 的處理速度快 100 倍。Spark基于Hadoop環(huán)境,Hadoop YARN為Spark提供資源調(diào)度框架,Hadoop HDFS為Spark提供底層的分布式文件存儲。

4.1. Spark安裝

Spark的安裝過程較為簡單,在已安裝好 Hadoop 的前提下,經(jīng)過簡單配置即可使用,首先下載 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命令使上述配置在當前終端立即生效,命令如下:

source /etc/profile

4.2. Spark單機配置

配置文件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

配置從機列表:

cp slaves.template slaves
gedit slaves

在最后加上:

master
slave1

把主機的spark文件夾復制到從機,復制腳本如下:

scp -r /usr/local/spark root@slave1:/usr/local

注意:每臺從機上需要配置Spark的環(huán)境變量

4.4 驗證Spark安裝和配置

通過運行Spark自帶的示例,驗證Spark是否安裝成功。

cd /usr/local/spark
./sbin/start-all.sh
bin/run-example SparkPi 2>&1 | grep "Pi is"

運行結果如下圖所示,可以得到π 的 14位小數(shù)近似值:

Spark Pi計算結果

在主機的瀏覽器輸入http://master:8079(集群模式)或者http://localhost:8079(單機模式)就可以看到有兩個節(jié)點在spark集群上。

5. 安裝hive

Hive是一個架構在Hadoop之上的數(shù)據(jù)倉庫基礎工具,用來處理結構化數(shù)據(jù),為大數(shù)據(jù)查詢和分析提供方便。最初,Hive是由Facebook開發(fā),后來由Apache軟件基金會開發(fā),并作為進一步將它作為名義下Apache Hive為一個開源項目。Hive 不是一個關系數(shù)據(jù)庫,也不是一個設計用于聯(lián)機事務處(OLTP)實時查詢和行級更新的語言。簡單的說,Hive就是在Hadoop上架了一層SQL接口,可以將SQL翻譯成MapReduce去Hadoop上執(zhí)行,這樣就使得數(shù)據(jù)開發(fā)和分析人員很方便的使用SQL來完成海量數(shù)據(jù)的統(tǒng)計和分析,而不必使用編程語言開發(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命令使上述配置在當前終端立即生效,命令如下:

source /etc/profile

5.2. 安裝并配置MySQL

我們采用MySQL數(shù)據(jù)庫保存Hive的元數(shù)據(jù),而不是采用Hive自帶的derby來存儲元數(shù)據(jù)。ubuntu下Mysql的安裝比較簡單,直接運行如下命令。在安裝過程中,會要求配置用戶名和密碼,這個一定要記住。

apt-get install mysql-server

啟動并登陸mysql shell

service mysql start
mysql -u root -p  #登陸shell界面

新建hive數(shù)據(jù)庫

#這個hive數(shù)據(jù)庫與hive-site.xml中l(wèi)ocalhost:3306/hive的hive對應,用來保存hive元數(shù)據(jù)
mysql> create database hive; 

將hive數(shù)據(jù)庫的字符編碼設置為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編輯器新建一個配置文件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>

然后,按鍵盤上的“ESC”鍵退出vim編輯狀態(tài),再輸入:wq,保存并退出vim編輯器。由于Hive在連接MySQL時需要JDBC驅(qū)動,所以首先需要下載對應版本的驅(qū)動,然后將驅(qū)動移動到/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

啟動hive(啟動hive之前,請先啟動hadoop集群)。

./usr/local/hadoop/sbin/start-all.sh #啟動hadoop,如果已經(jīng)啟動,則不用執(zhí)行該命令
hive  #啟動hive

5.4. Spark和Hive的整合

Hive的計算引擎默認為MapReduce,如果想要用Spark作為Hive的計算引擎,可以參考文章編譯Spark源碼支持Hive并部署

6. 結語

本文介紹了大數(shù)據(jù)環(huán)境的搭建過程,旨在讓學弟學妹們少踩坑。后面,作者將為大家奉獻如何利用Java+Scala來開發(fā)大數(shù)據(jù)應用。如果覺得文章有用的話,別忘記點贊哦O(∩_∩)O~!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容