1. 程式人生 > >HDFS和Hbase安裝指南,hbase1.2.4

HDFS和Hbase安裝指南,hbase1.2.4

HDFS和Hbase安裝指南

  1. 硬體和作業系統建議

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

/workspace中(代表在hadoop使用者目錄下的workspace資料夾),這樣比較方便,以免許可權問題帶來不必要的麻煩。

接下來的操作均以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. 建立使用者

注意:建立使用者要在所有機器都建立

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!

  1. 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

  1. 授權

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    #解壓檔案

  1. 修改環境變數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

  1. 給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    #執行解壓

  1. 配置 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>

  1. 將配置好的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

  1. 啟動Hadoop HDFS
  1. 關閉防火牆

chkconfig iptables off    #設定開機不自啟

sudo service iptables stop    #關閉防火牆

 

  1. 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 節點。

 

 

  1. 驗證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 檔案

  1. 進入到/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

  1. 將配置好的檔案分發給各節點(注意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

  1. 啟動 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    #新增可執行許可權

 

  1. 配置完成分發檔案到各個節點吧

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    #新增可執行許可權

  1. 驗證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 就行。

 

 

  1. 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