HDFS和Hbase安裝指南,hbase1.2.4
HDFS和Hbase安裝指南
- 硬體和作業系統建議
CPU |
Intel - Nehalem (2008釋出) 或以後釋出的CPU AMD - Bulldozer (2011釋出)或以後釋出的CPU |
CPU核心數 |
16或者24或者32核 |
記憶體 |
最低64GB記憶體,建議128G及以上 |
儲存 |
提供足夠大磁碟儲存空間即可,這取決於資料量大小和檔案副本數。 |
網絡卡 |
千兆或萬兆乙太網卡 |
64位 Linux的作業系統(推薦CentOS6.5) |
|
Red Hat Enterprise Linux (RHEL) 5.7/6.2/6.4 |
|
CentOS 5.7/6.2/6.5 |
|
Ubuntu 10.04/12.04 or Debian 6.03. |
2.寫在前面
文件中操作均為非 root 許可權,所以有些命令列需要加 sudo,如果你是 root 身份執行,請忽略 sudo。下載安裝的軟體建議都放在 home 目錄之上,比如/home/hadoop
接下來的操作均以1個master,2個slave的叢集方案來進行配置,多個slave操作請根據實際配置。
以下是本次安裝的軟體環境版本:
CentOS-6.5
jdk1.7.0_80
hadoop-2.7.3
zookeeper-3.4.9
hbase-1.2.4
注 : 所需軟體統一放置在安裝介質資料夾中
3.環境準備
1)修改主機名稱
我們將搭建1個master,2個slave的叢集方案。
首先修改主機名vi /etc/hostname
在master上修改為master,其中一個slave上修改為slave1,另一個slave上修改為slave2,依此類推。
2)配置hosts
每臺主機上都要修改host檔案
vi /etc/hosts
10.1.1.107 master
10.1.1.108 slave1
10.1.1.109 slave2
注:紅色ip地址根據實際填寫
3)配置之後在每臺機器都ping一下使用者名稱看是否生效
ping slave1
ping slave2
注意: 修改完以上兩步之後記得斷開重新連線下如果沒有生效則要重啟下機器顯示才會生效,效果如下
- 建立使用者
注意:建立使用者要在所有機器都建立
1. adduser hadoop #建立hadoop使用者
2. passwd hadoop #設定密碼
3. usermod -a -G hadoop hadoop #將hadoop使用者加入到hadoop使用者組
4. vim /etc/sudoers #修改sudoers給hadoop使用者賦予sudo許可權
# 修改內容如下:
root ALL = (ALL) ALL
hadoop ALL = (ALL) ALL
強制儲存 :wq!
- SSH免密碼登入
注意 : 在設定免密前要先切換到hadoop使用者
su - hadoop #切換hadoop使用者
1)安裝Openssh server(如果已安裝忽略該步驟)
#ubuntu安裝 sudo apt-get install openssh-server
#centos安裝 sudo yum install openssh-server
2)在所有機器上都生成私鑰和公鑰(所有節點都要在hadoop使用者下執行)
ssh-keygen -t rsa #一路回車
3)傳送id_rsa.pub給master節點,傳輸公鑰可以用scp來傳輸。
scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa.pub.slave1 #在slave1上執行
scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa.pub.slave2 #在slave2上執行
4)在master上,將所有公鑰加到用於認證的公鑰檔案authorized_keys
cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys #合併id_rsa.pub檔案
5)將公鑰檔案authorized_keys分發給每臺slave
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/ #在master執行,傳送給slave1
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/ #在master執行,傳送給slave2
- 授權
chmod 600 ~/.ssh/* #每臺機器都要執行,許可權過大或過小都會影響免密登入
7)在每臺機子上驗證SSH無密碼通訊
ssh master
ssh slave1
ssh slave2
注意:驗證完成後記得返回原節點,以免後續執行命令錯誤
6.安裝 jdk
注意:安轉jdk需要在所有機器都安裝
1)將安裝介質資料夾中的jdk-7u80-linux-x64.tar.gz上傳到~/workspace目錄下,然後解壓
tar -zxvf jdk-7u80-linux-x64.tar.gz #解壓檔案
- 修改環境變數sudo vim /etc/profile,新增下列內容:
export WORK_SPACE=/home/hadoop/workspace
export JAVA_HOME=$WORK_SPACE/jdk1.7.0_80
export JRE_HOME=/home/hadoop/workspace/jdk1.7.0_80/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
3)然後使環境變數生效,並驗證 Java 是否安裝成功
source /etc/profile #生效環境變數
java -version #如果打印出如下版本資訊,則說明安裝成功
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
#如果沒有打印出以上資訊,或者非1.7.0_80版本,輸入以下內容
echo $JAVA_HOME #輸出以下資訊也能說明成功
/home/hadoop/workspace/jdk1.7.0_80
- 給java下的/bin授權
chmod 755 /home/hadoop/workspace/jdk1.7.0_80/bin/* #授權bin
5)在其他節點機器上執行相同操作(步驟同上)
7.安裝配置 Hadoop HDFS
注意:在master上進行配置
1)首先將hadoop-2.7.3.tar.gz上傳到~/workspace,在~/workspace中解壓
tar -zxvf hadoop-2.7.3.tar.gz #執行解壓
- 配置 Hadoop
cd ~/workspace/hadoop-2.7.3/etc/hadoop #進入hadoop配置目錄
需要配置有以下7個檔案:hadoop-env.sh,yarn-env.sh,slaves,core-site.xml,hdfs-site.xml,maprd-site.xml,yarn-site.xml
·hadoop-env.sh中配置JAVA_HOME
# The java implementation to use.
export JAVA_HOME=/home/hadoop/workspace/jdk1.7.0_80
·yarn-env.sh中配置JAVA_HOME
# some Java parameters
export JAVA_HOME=/home/hadoop/workspace/jdk1.7.0_80
·slaves中配置slave節點的ip或者host
sudo vim slaves #編輯slaves檔案新增以下節點資訊(如果原來有locahost的話記得刪除)
slave1
slave2
·core-site.xml配置
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/workspace/hadoop-2.7.3/tmp</value>
</property>
</configuration>
·hdfs-site.xml配置
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/workspace/hadoop-2.7.3/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/workspace/hadoop-2.7.3/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
·mapred-site.xml配置,沒有該檔案直接執行以下命令
sudo vim mapred-site.xml #新建檔案mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
·yarn-site.xml配置
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
- 將配置好的hadoop-2.7.3資料夾分發給所有slaves
注意:記得首先在各個機器上建立workspace目錄
scp -r ~/workspace/hadoop-2.7.3 [email protected]:~/workspace/ #分發給slave1
scp -r ~/workspace/hadoop-2.7.3 [email protected]:~/workspace/ #分發給slave2
- 啟動Hadoop HDFS
- 關閉防火牆
chkconfig iptables off #設定開機不自啟
sudo service iptables stop #關閉防火牆
- 在 master 上執行以下操作,就可以啟動 hadoop 了。
cd ~/workspace/hadoop-2.7.3 #進入hadoop目錄
bin/hadoop namenode -format #格式化namenode
sbin/start-dfs.sh #啟動dfs
sbin/start-yarn.sh #啟動yarn
3)驗證 Hadoop 是否安裝成功
可以通過jps命令檢視各個節點啟動的程序是否正常。
master 上應該有以下幾個程序:
$ jps #run on master
3407 SecondaryNameNode
3218 NameNode
3552 ResourceManager
3910 Jps
每個slave上應該有以下幾個程序:
$ jps #run on slaves
2072 NodeManager
2213 Jps
1962 DataNode
或者在瀏覽器中輸入 http://master:50070(也可以進入http://master:8088檢視),應該有 hadoop 的介面出來了,並能看到 slave1 和 slave2 節點。
- 驗證HDFS
隨便上傳個檔案到hdfs
cd /home/hadoop/workspace/hadoop-2.7.3/bin #進入命令目錄
./hdfs dfs -mkdir /master #建立master目錄
./hdfs dfs -put hdfs.cmd /master #將hdfs.cmd上傳到/master目錄下
./hdfs dfs -ls /master #檢視上傳是否成功
如果能看到剛上傳的檔案則說明HDFS檔案系統啟動成功
還可以進入https://master:50070檢視網頁版驗證(Utilities>Browse the file system),master不行就直接輸入主節點ip
注:到這裡HDFS檔案系統就搭建完成了
9.安裝 zookeeper-3.4.9
1)上傳檔案zookeeper-3.4.9.tar.gz到~/workspace目錄下
解壓縮 zookeeper-3.4.9.tar.gz
tar -zxvf zookeeper-3.4.9.tar.gz
3)進入到 /home/hadoop/workspace/zookeeper-3.4.9/conf 目錄中
sudo vim zoo.cfg #新建zoo.cfg配置檔案 ,新增以下內容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/workspace/zookeeper-3.4.9/data
dataLogDir=/home/hadoop/workspace/zookeeper-3.4.9/logs
clientPort=2182
server.1=master:2287:3387
server.2=slave1:2287:3387
server.3=slave2:2287:3387
儲存並關閉 zoo.cfg 檔案
- 進入到/home/hadoop/workspace/zookeeper-3.4.9/data目錄下
注意:data目錄如果沒有要新建
mkdir data #在/home/hadoop/workspace/zookeeper-3.4.9/目錄下新建data目錄
sudo vim myid #生成一個myid檔案,內容為1
1
5)用 vim 開啟 /etc/ 目錄下的配置檔案 profile:
sudo vim /etc/profile #並在其尾部追加如下內容:
export ZOOKEEPER_HOME=/home/hadoop/workspace/zookeeper-3.4.9
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH
·使 /etc/ 目錄下的 profile 檔案即可生效:
source /etc/profile
- 將配置好的檔案分發給各節點(注意zookeeper的節點數必須是單數且最少3個)
scp -r ~/workspace/zookeeper-3.4.9 [email protected]:~/workspace/ #分發給slave1
scp -r ~/workspace/zookeeper-3.4.9 [email protected]:~/workspace/ #分發給slave2
·分發完之後記得改下各個slave上的/home/hadoop/workspace/zookeeper-3.4.9/data目錄下的myid
sudo vim myid #在slave1上修改myid檔案,內容為 2
sudo vim myid #在slave2上修改myid檔案,內容為 3
- 啟動 zookeeper 服務
注意:記得在每個節點都要執行啟動命令
進入/home/hadoop/workspace/zookeeper-3.4.9/bin
./zkServer.sh start #啟動zoopeeper
如列印如下資訊則表明啟動成功:
ZooKeeper JMX enabled by default
Using config: /home/hadoop/workspace/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
8)查詢 zookeeper 狀態
./zkServer.sh status #檢視狀態
10.安裝部署hbase
1)上傳檔案hbase-1.2.4-bin.tar.gz到~/workspace目錄下
解壓縮 hbase-1.2.4-bin.tar.gz
tar -zxvf hbase-1.2.4-bin.tar.gz #解壓檔案
2)進入~/workspace/hbase-1.2.4/conf修改配置檔案
·hbase-env.sh配置
加上以下屬性:
export JAVA_HOME=/home/hadoop/workspace/jdk1.7.0_80
export HBASE_LOG_DIR=/home/hadoop/workspace/hbase-1.2.4/logs
export HBASE_MANAGES_ZK=true
export HBASE_HOME=/home/hadoop/workspace/hbase-1.2.4
export HBASE_HEAPSIZE=4G
附加屬性含義:
export JAVA_HOME # java安裝路徑
export HBASE_LOG_DIR # Hbase日誌路徑,要新建logs資料夾 mkdir logs
export HBASE_MANAGES_ZK #true表示由Hbase負責啟動關閉zookeeper
export HBASE_HOME #Hbase 安裝路徑
export HBASE_HEAPSIZE #記憶體設定,根據實際情況設定
·hbase-site.xml配置
該檔案預設沒有任何屬性,需要自行新增。
在 <configuration></configuration> 節點內新增以下屬性:
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.master.port</name>
<value>60005</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.client.write.buffer</name>
<value>2097152</value>
</property>
<property>
<name>hbase.client.pause</name>
<value>100</value>
</property>
<property>
<name>hbase.client.retries.number</name>
<value>35</value>
</property>
<property>
<name>hbase.client.scanner.caching</name>
<value>100</value>
</property>
<property>
<name>hbase.client.keyvalue.maxsize</name>
<value>10485760</value>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value>60000</value>
</property>
<property>
<name>hbase.snapshot.enabled</name>
<value>true</value>
</property>
<property>
<name>hbase.security.authentication</name>
<value>simple</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>60000</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
<property>
<name>zookeeper.znode.rootserver</name>
<value>root-region-server</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>100</value>
</property>
部分屬性值解釋:
Hbase.rootdir #Hbase在hdfs上的儲存根目錄
Hbase.master.port #Hbase執行master 的埠號,設定的時候,保證不衝突就行
Hbase.cluster.distributed #設定叢集處於分散式模式
Hbase.client.write.buffer #客戶端讀寫緩衝區記憶體設定
Hbase.client.pause #客戶端最大等待時間
Hbase.client.retries.number #客戶端最大嘗試次數
Zookeeper.znode.paren #Hbase的zookeeper配置檔案路徑設定
Hbase.zookeeper.quorum #全分佈設定,zookeeper的法定伺服器列表。
Hbase.regionserver.handler.coun #Hbase 事件控制代碼數量設定
·regionservers配置
此檔案中的預設值是localhost,表示Hbase只在本機上執行,如果是叢集環境,我們設定Hbase執行在各個datanode上
例:
我們將Hbase安裝在namenode 節點上,設定Hbase執行在datanode上
所以配置如下:
slave1
slave2
·許可權設定
sudo chmod a+x -R /bin #新增可執行許可權
- 配置完成分發檔案到各個節點吧
scp -r ~/workspace/hbase-1.2.4 [email protected]:~/workspace/ #分發給slave1
scp -r ~/workspace/hbase-1.2.4 [email protected]:~/workspace/ #分發給slave2
注意:傳完後記得在slave節點給/bin目錄授權
sudo chmod a+x -R /bin #新增可執行許可權
- 驗證hbase
·啟動hbase服務
cd ~/workspace/hbase-1.2.4/bin #進入hbase bin目錄
./start-hbase.sh #啟動hbase
進入網頁版驗證
hbase網頁監控:http://master:16010 #如果master進不去改為主節點ip
·進入habse庫
./bin/hbase shell #進入hbase庫
出現上圖所示為成功進入輸入
status #檢視服務狀態,出現如下結果表示hbase正常
·驗證hbase庫
list #檢視所有表
create 'member','m_id','address','info' #建立一個表member
·向member表插入幾條記錄
put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:birthday','1987-06-17'
put'member','scutshuxue','info:company','alibaba'
put'member','scutshuxue','address:contry','china'
scan 'member' #查看錶的資料,成功說明安裝完成
注意:可能出現的問題
Hbase資料庫在機器重啟後,會自動關閉。
因為Linux 作業系統在重啟的時候會清空/tmp目錄,而Hbase 資料庫在啟動的時候會在tmp 目錄下生成以下三個檔案
所以如果啟動遇到以下問題,就是機器重啟過,不要擔心直接啟動Hbase 就行。
- ntpd服務開啟
注:hadoop 需要各節點的時間差不能超過30秒,否則會報錯。在區域網環境,必須配置 ntpd 伺服器,保證各節點之間時間一致。
以下做法的原理是:三臺都去127.0.0.1 這臺機器同步時間,故應該保證這個機器的時間是正常的。
·安裝前首先檢查下各個伺服器是否有ntp服務
# service ntpd status #檢查狀態(centos6.5帶這個服務)
如果有直接跳到第二步。
注意:在每臺機器上都要進行以下步驟
1) 安裝
NTP可以使用yum直接安裝
# sudo yum install ntp
2) NTP配置
修改NTP的配置檔案sudo vim /etc/ntp.conf預設配置內容為:
#取消該配置的註釋
# Hosts on local network are less restricted.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
3) 啟動服務
# /etc/rc.d/init.d/ntpd start
或者
# service ntpd start
檢視ntpd狀態:
# service ntpd status
為了使NTP服務可以在系統引導的時候自動啟動,執行:
# sudo chkconfig ntpd on