單機(jī)環(huán)境安裝Zookeeper+Hadoop+Hbase+Phoenix
環(huán)境準(zhǔn)備
系統(tǒng)環(huán)境:Centos 7.6
配置映射
[root@ java]# vim /etc/hosts
添加如下配置:
# 文件末尾增加
本機(jī)IP地址 hadoop001
使用軟件版本說明
因?yàn)锳pache的Hadoop版本和Hbase的版本不太穩(wěn)定所以本文所用的都為CDH版本
<nav>
<a href="# 一.安裝JDK">一.安裝JDK</a>
????????<a href="#1.1 下載并解壓">1.1 下載并解壓</a>
????????<a href="#1.2 設(shè)置環(huán)境變量">1.2 設(shè)置環(huán)境變量</a>
????????<a href="#1.3 檢查是否安裝成功">1.3 檢查是否安裝成功</a>
<a href="#二.安裝Zookeeper">二.安裝Zookeeper</a>
????????<a href="#2.1 下載">2.1 下載</a>
????????<a href="#2.2 解壓">2.2 解壓</a>
????????<a href="#2.3 配置環(huán)境變量">2.3 配置環(huán)境變量</a>
????????<a href="#2.4 修改配置">2.4 修改配置</a>
????????<a href="#2.5 啟動(dòng)">2.5 啟動(dòng)</a>
????????<a href="#2.6 驗(yàn)證是否安裝成功">2.6 驗(yàn)證是否安裝成功</a>
<a href="#三.安裝Hadoop">三.安裝Hadoop</a>
????????<a href="#3.1 配置免密登錄">3.1 配置免密登錄</a>
????????????<a href="#3.1.1 生成公私鑰">3.1.1 生成公私鑰</a>
????????????<a href="#3.1.2 授權(quán)">3.1.2 授權(quán)</a>
????????<a href="#3.2 Hadoop(HDFS)環(huán)境搭建">3.2 Hadoop(HDFS)環(huán)境搭建</a>
????????????<a href="#3.2.1 下載并解壓">3.2.1 下載并解壓</a>
????????????<a href="#3.2.2 配置環(huán)境變量">3.2.2 配置環(huán)境變量</a>
????????????<a href="#3.2.3 修改Hadoop配置">3.2.3 修改Hadoop配置</a>
????????????<a href="#3.2.4 關(guān)閉防火墻">3.2.4 關(guān)閉防火墻</a>
????????????<a href="#3.2.5 初始化">3.2.5 初始化</a>
????????????<a href="#3.2.6 啟動(dòng)HDFS">3.2.6 啟動(dòng)HDFS</a>
????????????<a href="#3.2.7 驗(yàn)證是否啟動(dòng)成功">3.2.7 驗(yàn)證是否啟動(dòng)成功</a>
????????<a href="#3.3 Hadoop(YARN)環(huán)境搭建">3.3 Hadoop(YARN)環(huán)境搭建</a>
????????????<a href="#3.3.1 修改配置">3.3.1 修改配置</a>
????????????<a href="#3.3.2 啟動(dòng)服務(wù)">3.3.2 啟動(dòng)服務(wù)</a>
????????????<a href="#3.3.3 驗(yàn)證是否啟動(dòng)成功">3.3.3 驗(yàn)證是否啟動(dòng)成功</a>
<a href="#四.安裝Hbase">四.安裝Hbase</a>
????????<a href="#4.1 軟件下載解壓">4.1 軟件下載解壓</a>
????????<a href="#4.2 配置環(huán)境變量">4.2 配置環(huán)境變量</a>
????????<a href="#4.3 進(jìn)行HBase相關(guān)配置">4.3 進(jìn)行HBase相關(guān)配置</a>
????????<a href="#4.4 啟動(dòng)Hbase">4.4 啟動(dòng)Hbase</a>
????????<a href="#4.5 驗(yàn)證是否安裝成功">4.5 驗(yàn)證是否安裝成功</a>
<a href="#五.安裝Phoenix">五.安裝Phoenix</a>
????????<a href="#5.1 下載并解壓">5.1 下載并解壓</a>
????????<a href="#5.2 拷貝Jar包">5.2 拷貝Jar包</a>
????????<a href="#5.3 重啟 Region Servers">5.3 重啟 Region Servers</a>
????????<a href="#5.4 啟動(dòng)Phoenix">5.4 啟動(dòng)Phoenix</a>
????????<a href="#5.5 驗(yàn)證是否安裝成功">5.5 驗(yàn)證是否安裝成功</a>
一.安裝JDK
JDK 版本:jdk 1.8.0_20
<a name="1.1 下載并解壓">1.1 下載并解壓</a>
在官網(wǎng) 下載所需版本的 JDK,這里我下載的版本為JDK 1.8 ,下載后進(jìn)行解壓:
[root@ java]# tar -zxvf jdk-8u201-linux-x64.tar.gz
<a name="1.2 設(shè)置環(huán)境變量">1.2 設(shè)置環(huán)境變量</a>
[root@ java]# vi /etc/profile
添加如下配置:
export JAVA_HOME=/usr/java/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
執(zhí)行 source 命令,使得配置立即生效:
[root@ java]# source /etc/profile
<a name="1.3. 檢查是否安裝成功">1.3. 檢查是否安裝成功</a>
[root@ java]# java -version
顯示出對(duì)應(yīng)的版本信息則代表安裝成功。
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
<a name="二.安裝Zookeeper">二.安裝Zookeeper</a>
<a name="2.1 下載">2.1 下載</a>
下載對(duì)應(yīng)版本 Zookeeper,這里我下載的版本 3.4.14。官方下載地址:https://archive.apache.org/dist/zookeeper/
# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
<a name="2.2 解壓">2.2 解壓</a>
# tar -zxvf zookeeper-3.4.14.tar.gz
<a name="2.3 配置環(huán)境變量">2.3 配置環(huán)境變量</a>
# vim /etc/profile
添加環(huán)境變量:
export ZOOKEEPER_HOME=/usr/app/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使得配置的環(huán)境變量生效:
# source /etc/profile
<a name="2.4 修改配置">2.4 修改配置</a>
進(jìn)入安裝目錄的 conf/ 目錄下,拷貝配置樣本并進(jìn)行修改:
# cp zoo_sample.cfg zoo.cfg
指定數(shù)據(jù)存儲(chǔ)目錄和日志文件目錄(目錄不用預(yù)先創(chuàng)建,程序會(huì)自動(dòng)創(chuàng)建),修改后完整配置如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
配置參數(shù)說明:
- tickTime:用于計(jì)算的基礎(chǔ)時(shí)間單元。比如 session 超時(shí):N*tickTime;
- initLimit:用于集群,允許從節(jié)點(diǎn)連接并同步到 master 節(jié)點(diǎn)的初始化連接時(shí)間,以 tickTime 的倍數(shù)來表示;
- syncLimit:用于集群, master 主節(jié)點(diǎn)與從節(jié)點(diǎn)之間發(fā)送消息,請(qǐng)求和應(yīng)答時(shí)間長度(心跳機(jī)制);
- dataDir:數(shù)據(jù)存儲(chǔ)位置;
- dataLogDir:日志目錄;
- clientPort:用于客戶端連接的端口,默認(rèn) 2181
<a name="2.5 啟動(dòng)">2.5 啟動(dòng)</a>
由于已經(jīng)配置過環(huán)境變量,直接使用下面命令啟動(dòng)即可:
zkServer.sh start
<a name="2.6 驗(yàn)證是否安裝成功">2.6 驗(yàn)證是否安裝成功</a>
使用 JPS 驗(yàn)證進(jìn)程是否已經(jīng)啟動(dòng),出現(xiàn) QuorumPeerMain 則代表啟動(dòng)成功。
[root@hadoop001 bin]# jps
3814 QuorumPeerMain
<a name="三.安裝Hadoop">三.安裝Hadoop</a>
<a name="3.1 配置免密登錄">3.1 配置免密登錄</a>
Hadoop 組件之間需要基于 SSH 進(jìn)行通訊。
<a name="3.1.1 生成公私鑰">3.1.1 生成公私鑰</a>
執(zhí)行下面命令行生成公匙和私匙:
ssh-keygen -t rsa
<a name="3.1.2 授權(quán)">3.1.2 授權(quán)</a>
進(jìn)入 ~/.ssh 目錄下,查看生成的公匙和私匙,并將公匙寫入到授權(quán)文件:
[root@@hadoop001 sbin]# cd ~/.ssh
[root@@hadoop001 .ssh]# ll
-rw-------. 1 root root 1675 3 月 15 09:48 id_rsa
-rw-r--r--. 1 root root 388 3 月 15 09:48 id_rsa.pub
# 寫入公匙到授權(quán)文件
[root@hadoop001 .ssh]# cat id_rsa.pub >> authorized_keys
[root@hadoop001 .ssh]# chmod 600 authorized_keys
<a name="3.2 Hadoop(HDFS)環(huán)境搭建">3.2 Hadoop(HDFS)環(huán)境搭建</a>
<a name="3.2.1 下載并解壓">3.2.1 下載并解壓</a>
下載 Hadoop 安裝包,這里我下載的是 CDH 版本的,下載地址為:http://archive.cloudera.com/cdh5/cdh/5/
# 解壓
tar -zvxf hadoop-2.6.0-cdh5.16.2.tar.gz
<a name="3.2.2 配置環(huán)境變量">3.2.2 配置環(huán)境變量</a>
# vi /etc/profile
配置環(huán)境變量:
export HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.16.2
export PATH=${HADOOP_HOME}/bin:$PATH
執(zhí)行 source 命令,使得配置的環(huán)境變量立即生效:
# source /etc/profile
<a name="3.2.3 修改Hadoop配置">3.2.3 修改Hadoop配置</a>
進(jìn)入 ${HADOOP_HOME}/etc/hadoop/ 目錄下,修改以下配置:
1. hadoop-env.sh
# JDK安裝路徑
export JAVA_HOME=/usr/java/jdk1.8.0_201/
2. core-site.xml
<configuration>
<property>
<!--指定 namenode 的 hdfs 協(xié)議文件系統(tǒng)的通信地址-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop001:8020</value>
</property>
<property>
<!--指定 hadoop 存儲(chǔ)臨時(shí)文件的目錄-->
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
</configuration>
3. hdfs-site.xml
指定副本系數(shù)和臨時(shí)文件存儲(chǔ)位置:
<configuration>
<property>
<!--由于我們這里搭建是單機(jī)版本,所以指定 dfs 的副本系數(shù)為 1-->
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4. slaves
配置所有從屬節(jié)點(diǎn)的主機(jī)名或 IP 地址,由于是單機(jī)版本,所以指定本機(jī)即可,編輯slaves設(shè)置為:
hadoop001
<a name="3.2.4 關(guān)閉防火墻">3.2.4 關(guān)閉防火墻</a>
不關(guān)閉防火墻可能導(dǎo)致無法訪問 Hadoop 的 Web UI 界面:
# 查看防火墻狀態(tài)
sudo firewall-cmd --state
# 關(guān)閉防火墻:
sudo systemctl stop firewalld.service
<a name="3.2.5 初始化">3.2.5 初始化</a>
第一次啟動(dòng) Hadoop 時(shí)需要進(jìn)行初始化,進(jìn)入 ${HADOOP_HOME}/bin/ 目錄下,執(zhí)行以下命令:
[root@hadoop001 bin]# ./hdfs namenode -format
<a name="3.2.6 啟動(dòng)HDFS">3.2.6 啟動(dòng)HDFS</a>
進(jìn)入 ${HADOOP_HOME}/sbin/ 目錄下,啟動(dòng) HDFS:
[root@hadoop001 sbin]# ./start-dfs.sh
<a name="3.2.7 驗(yàn)證是否啟動(dòng)成功">3.2.7 驗(yàn)證是否啟動(dòng)成功</a>
方式一:執(zhí)行 jps 查看 NameNode 和 DataNode 服務(wù)是否已經(jīng)啟動(dòng):
[root@hadoop001 hadoop-2.6.0-cdh5.16.2]# jps
9137 DataNode
9026 NameNode
9390 SecondaryNameNode
方式二:查看 Web UI 界面,端口為 50070:
<div><img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawcrlnew0j22bg16o48d.jpg"/></div>
<a name="3.3 Hadoop(YARN)環(huán)境搭建"></a>
<a name="3.3.1 修改配置">3.3.1 修改配置</a>
進(jìn)入 ${HADOOP_HOME}/etc/hadoop/ 目錄下,修改以下配置:
1. mapred-site.xml
# 如果沒有mapred-site.xml,則拷貝一份樣例文件后再修改
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2. yarn-site.xml
<configuration>
<property>
<!--配置 NodeManager 上運(yùn)行的附屬服務(wù)。需要配置成 mapreduce_shuffle 后才可以在 Yarn 上運(yùn)行 MapReduce 程序。-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
<a name="3.3.2 啟動(dòng)服務(wù)">3.3.2 啟動(dòng)服務(wù)</a>
進(jìn)入 ${HADOOP_HOME}/sbin/ 目錄下,啟動(dòng) YARN:
./start-yarn.sh
<a name="3.3.3 驗(yàn)證是否啟動(dòng)成功">3.3.3 驗(yàn)證是否啟動(dòng)成功</a>
方式一:執(zhí)行 jps 命令查看 NodeManager 和 ResourceManager 服務(wù)是否已經(jīng)啟動(dòng):
[root@hadoop001 hadoop-2.6.0-cdh5.16.2]# jps
9137 DataNode
9026 NameNode
12294 NodeManager
12185 ResourceManager
9390 SecondaryNameNode
方式二:查看 Web UI 界面,端口號(hào)為 8088:
<div><img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawcteetpvj22bg16qwr9.jpg"/></div>
<a name="四.安裝Hbase">四.安裝Hbase</a>
HBase 的版本必須要與 Hadoop 的版本兼容,不然會(huì)出現(xiàn)各種 Jar 包沖突。這里我 Hadoop 安裝的版本為 hadoop-2.6.0-cdh5.16.2,為保持版本一致,選擇的 HBase 版本為 hbase-1.2.0-cdh5.14.2 。所有軟件版本如下:
- Hadoop 版本: hadoop-2.6.0-cdh5.16.2
- HBase 版本: hbase-1.2.0-cdh5.14.2
- JDK 版本:JDK 1.8
這里為版本兼容情況
<div align="center"> <img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawbiwzz7bj20r50n2myr.jpg"/></div>
<a name="4.1 軟件下載解壓">4.1 軟件下載解壓</a>
下載后進(jìn)行解壓,下載地址:http://archive.cloudera.com/cdh5/cdh/5/
# tar -zxvf hbase-1.2.0-cdh5.14.2.tar.gz
<a name="4.2 配置環(huán)境變量">4.2 配置環(huán)境變量</a>
# vim /etc/profile
添加環(huán)境變量:
export HBASE_HOME=/usr/app/hbase-1.2.0-cdh5.14.2
export PATH=$HBASE_HOME/bin:$PATH
使得配置的環(huán)境變量生效:
# source /etc/profile
<a name="4.3 進(jìn)行HBase相關(guān)配置">4.3 進(jìn)行HBase相關(guān)配置</a>
1.修改安裝目錄下的 conf/hbase-env.sh,指定 JDK 的安裝路徑:
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/usr/java/jdk1.8.0_201
# 使用外部zookeeper管理hbase
export HBASE_MANAGES_ZK=flase
2.修改安裝目錄下的 conf/hbase-site.xml,增加如下配置 (hadoop001 為主機(jī)名):
<configuration>
<!--指定 HBase 以分布式模式運(yùn)行-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--指定 HBase 數(shù)據(jù)存儲(chǔ)路徑為 HDFS 上的 hbase 目錄,hbase 目錄不需要預(yù)先創(chuàng)建,程序會(huì)自動(dòng)創(chuàng)建-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop001:8020/hbase</value>
</property>
<!--指定 zookeeper 數(shù)據(jù)的存儲(chǔ)位置-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper/data</value>
</property>
<!--指定 Hbase Web UI 默認(rèn)端口-->
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
<!--指定外置zookeeper-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop001:2181</value>
</property>
</configuration>
3.修改安裝目錄下的 conf/regionservers,指定 region servers 的地址,修改后其內(nèi)容如下:
hadoop001
<a name="4.4 啟動(dòng)Hbase">4.4 啟動(dòng)Hbase</a>
# bin/start-hbase.sh
<a name="4.5 驗(yàn)證是否安裝成功">4.5 驗(yàn)證是否安裝成功</a>
驗(yàn)證方式一 :使用 jps 命令查看進(jìn)程。其中 HMaster,HRegionServer 是 HBase 的進(jìn)程,HQuorumPeer 是 HBase 內(nèi)置的 Zookeeper 的進(jìn)程,其余的為 HDFS 和 YARN 的進(jìn)程。
[root@hadoop001 conf]# jps
28688 NodeManager
25824 GradleDaemon
10177 Jps
22083 HRegionServer
20534 DataNode
20807 SecondaryNameNode
18744 Main
20411 NameNode
21851 HQuorumPeer
28573 ResourceManager
21933 HMaster
驗(yàn)證方式二 :訪問 HBase Web UI 界面,需要注意的是 1.2 版本的 HBase 的訪問端口為 60010
<div><img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawcusk23aj22bc170ail.jpg"/></div>
<a name="五.安裝Phoenix">五.安裝Phoenix</a>
Phoenix 是 HBase 的開源 SQL 中間層,它允許你使用標(biāo)準(zhǔn) JDBC 的方式來操作 HBase 上的數(shù)據(jù)。在 Phoenix 之前,如果你要訪問 HBase,只能調(diào)用它的 Java API,但相比于使用一行 SQL 就能實(shí)現(xiàn)數(shù)據(jù)查詢,HBase 的 API 還是過于復(fù)雜。Phoenix 的理念是 we put sql SQL back in NOSQL,即你可以使用標(biāo)準(zhǔn)的 SQL 就能完成對(duì) HBase 上數(shù)據(jù)的操作。同時(shí)這也意味著你可以通過集成 Spring Data JPA 或 Mybatis 等常用的持久層框架來操作 HBase。
其次 Phoenix 的性能表現(xiàn)也非常優(yōu)異,Phoenix 查詢引擎會(huì)將 SQL 查詢轉(zhuǎn)換為一個(gè)或多個(gè) HBase Scan,通過并行執(zhí)行來生成標(biāo)準(zhǔn)的 JDBC 結(jié)果集。它通過直接使用 HBase API 以及協(xié)處理器和自定義過濾器,可以為小型數(shù)據(jù)查詢提供毫秒級(jí)的性能,為千萬行數(shù)據(jù)的查詢提供秒級(jí)的性能。同時(shí) Phoenix 還擁有二級(jí)索引等 HBase 不具備的特性,因?yàn)橐陨系膬?yōu)點(diǎn),所以 Phoenix 成為了 HBase 最優(yōu)秀的 SQL 中間層。
<a name="5.1 下載并解壓">5.1 下載并解壓</a>
官方針對(duì) Apache 版本和 CDH 版本的 HBase 均提供了安裝包,按需下載即可。官方下載地址: http://phoenix.apache.org/download.html
# 下載
wget http://mirror.bit.edu.cn/apache/phoenix/apache-phoenix-4.14.0-cdh5.14.2/bin/apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz
# 解壓
tar tar apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz
<a name="5.2 拷貝Jar包">5.2 拷貝Jar包</a>
按照官方文檔的說明,需要將 phoenix server jar 添加到所有 Region Servers 的安裝目錄的 lib 目錄下。
這里由于我搭建的是 HBase 偽集群,所以只需要拷貝到當(dāng)前機(jī)器的 HBase 的 lib 目錄下。如果是真實(shí)集群,則使用 scp 命令分發(fā)到所有 Region Servers 機(jī)器上。
cp /usr/app/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-4.14.0-cdh5.14.2-server.jar /usr/app/hbase-1.2.0-cdh5.14.2/lib
<a name="5.3 重啟 Region Servers">5.3 重啟 Region Servers</a>
# 停止Hbase
stop-hbase.sh
# 啟動(dòng)Hbase
start-hbase.sh
<a name="5.4 啟動(dòng)Phoenix">5.4 啟動(dòng)Phoenix</a>
在 Phoenix 解壓目錄下的 bin 目錄下執(zhí)行如下命令,需要指定 Zookeeper 的地址:
- 如果 HBase 采用 Standalone 模式或者偽集群模式搭建,則默認(rèn)采用內(nèi)置的 Zookeeper 服務(wù),端口為 2181;
- 如果是 HBase 是集群模式并采用外置的 Zookeeper 集群,則按照自己的實(shí)際情況進(jìn)行指定。
# ./sqlline.py hadoop001:2181
<a name="5.5 驗(yàn)證是否安裝成功">5.5 驗(yàn)證是否安裝成功</a>
啟動(dòng)后則進(jìn)入了 Phoenix 交互式 SQL 命令行,可以使用 !table 或 !tables 查看當(dāng)前所有表的信息
<div><img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawcxfmjfjj227m0xsdz6.jpg"/></div>
本文內(nèi)容部分摘自[https://github.com/heibaiying/BigData-Notes]