在 Ubuntu 12.04 安裝 HDFS 及 HBase 筆記

作者: Yong-Siang Shih / Sun 13 April 2014 / 分類: Notes

Hadoop, HBase, HDFS, Ubuntu

這篇是假設 master, slave-1, slave-2 的 domain name/ip 分別為: master-dn, slave-1-dn, slave-2-dn。

一、HDFS

  1. 安裝 JDK 7

    sudo apt-get update && apt-get upgrade # 更新套件庫
    sudo apt-get install software-properties-common python-software-properties  # 取得 add-apt-repository
    sudo add-apt-repository ppa:webupd8team/java  # 新增有 oracle-java7-installer 的 ppa
    sudo apt-get update
    sudo apt-get install oracle-java7-installer
  2. 設定 SSH

    ssh-keygen -b 2048 -t rsa:q  # 產生 RSA key pair
    cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys  # 讓自己可以不用密碼登入自己

    在 NameNode 上:

    ssh-copy-id -i $HOME/.ssh/id_rsa.pub user@slave-1-dn  # 讓 NameNode 可不用密碼登入 DataNode
    ssh-copy-id -i $HOME/.ssh/id_rsa.pub user@slave-2-dn  # 讓 NameNode 可不用密碼登入 DataNode
  3. 安裝 Hadoop

    先在 $HOME/.bashrc 加上 export PATH=$PATH:$HOME/hadoop-1.2.1/bin,然後進入家目錄:

    wget http://ftp.tc.edu.tw/pub/Apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1-bin.tar.gz
    tar -xvf hadoop-1.2.1-bin.tar.gz
    cd hadoop-1.2.1/conf

    修改 hadoop-env.sh 加上 export JAVA_HOME=/usr/lib/jvm/java-7-oracle

  4. 進階設定

    在下列檔案中的內新增如下內容:

    • core-site.xml

      <property>
      <name>fs.default.name</name>
      <value>hdfs://master-dn:54310</value>
      </property>
      
    • mapred-site.xml

      <property>
      <name>mapred.job.tracker</name>
      <value>master-dn:54311</value>
      </property>
      
    • hdfs-site.xml

      <property>
      <name>dfs.replication</name>
      <value>3</value>
      </property>
      

    然後在 NameNode 上修改將以下檔案修改成如下內容:

    • masters

      master-dn
      
    • slaves

      master-dn
      slave-1-dn
      slave-2-dn
      
  5. 開啟伺服器 最後在 NameNode 上執行以下指令將 cluster 啟動(可能需要重新登入讓 PATH 設定生效):

    hadoop namenode -format  # 格式化檔案系統
    start-all.sh  # 啟動所有服務(包含 HDFS)

二、HBase

首先進入每台的家目錄,下載並解壓縮 HBase:

wget http://ftp.twaren.net/Unix/Web/apache/hbase/stable/hbase-0.94.14.tar.gz
tar -xvf hbase-0.94.14.tar.gz

編輯 hbase-0.94.14/conf/hbase-env.sh,新增數行:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export HADOOP_CONF_DIR=$HOME/hadoop-1.2.1/conf
export HBASE_HOME=$HOME/hbase-0.94.14
export HBASE_LOG_DIR=$HOME/logs/hbase-logs
export HBASE_PID_DIR=$HOME/logs/hbase-pids
export HBASE_CLASSPATH=$HBASE_CLASSPATH:$HOME/hadoop-1.2.1/conf
export HBASE_MANAGES_ZK=true

編輯 hbase-0.94.14/conf/hbase-site.xml,在內新增如下內容:

<property>
    <name>hbase.rootdir</name>
    <value>hdfs://master-dn:54310/hbase</value>
</property>
<property>
    <name>hbase.tmp.dir</name> 
    <value>/home/hbase-${user.name}</value>
</property>
<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>       
<property> 
    <name>hbase.zookeeper.quorum</name>
    <value>master-dn,slave-1-dn,slave-2-dn</value>
</property>
<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hbase-data</value> 
</property>

然後編輯 hbase-0.94.14/conf/regionservers 將內容改為如下:

master-dn
slave-1-dn
slave-2-dn

最後就可以在 master 執行 HBase 了:

./hbase-0.94.14/bin/start-hbase.sh
Notebook
Yong-Siang Shih

作者

Yong-Siang Shih

軟體工程師,機器學習科學家,開放原始碼愛好者。曾在 Appier 從事機器學習系統開發,也曾在 Google, IBM, Microsoft 擔任軟體實習生。喜好探索學習新科技。* 在 GitHub 上追蹤我

載入 Disqus 評論