這篇是假設 master, slave-1, slave-2 的 domain name/ip 分別為: master-dn, slave-1-dn, slave-2-dn。
一、HDFS
-
安裝 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
-
設定 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
-
安裝 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
。 -
進階設定
在下列檔案中的內新增如下內容:
-
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
-
-
開啟伺服器 最後在 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