先前的經驗是有把 hbase-*.jar 放到 $HADOOP_HOME/lib 底下,並重新啟動 Hadoop 即可。
(至少必須重新啟動 TaskTracker,因為 Runtime 的 CLASSPATH 在啟動時就指定了,不重開不會更新)
驗證方式:請在 TaskTracker 的主機上,下 ps ax | grep java 並檢驗 CLASSPATH 是否有 hbase-*.jar
或者直接 ps ax | grep hbase 看一下有無結果。
whylu 寫:
2. 在/etc/profile加入以下,並重新啟動整個hadoop
HADOOP_HOME=/home/hadoop/cdh3/hadoop-0.20.2-cdh3u0
HBASE_HOME=/home/hadoop/cdh3/hbase-0.90.1-cdh3u0
ZOOKEEPER_HOME=/home/hadoop/cdh3/zookeeper-3.3.3-cdh3u0
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH :$HADOOP_HOME/lib:$HBASE_HOME/lib:$ZOOKEEPER_HOME/lib
(其實我不太確定hadoop是否會抓到$classpath)
3. 在$HADOOP_HOME/conf/hadoop-env.sh加入以下,並重新啟動整個hadoop
HADOOP_LIB=/home/hadoop/cdh3/hadoop-0.20.2-cdh3u0/lib
HBASE_LIB=/home/hadoop/cdh3/hbase-0.90.1-cdh3u0/lib
ZOOKEEPER_LIB=/home/hadoop/cdh3/zookeeper-3.3.3-cdh3u0/lib
export HADOOP_LIB HBASE_LIB ZOOKEEPER_LIB
習慣上我都通通改在 hadoop-env.sh 中,
因為 /etc/profile 是只有 login 權限的才會讀取。CDH3 的 hadoop 身份有些並沒有 default shell 也不會去讀 /etc/profile。
而且建議您確認一下 TaskTracker 的 $HADOOP_HOME/lib 是否也有加入 hbase-*.jar 跟 zookeeper-*.jar。
- Jazz