這邊是簡單紀錄一下我遇到的問題
有些解決了,所以紀錄一下解法
有些沒辦法解決,也希望看有沒有人可以幫忙解決的XD
Hadoop:
* 丟完Job以後出現 error reading task output
1. 因為老版把hadoop預設的memory限制改到4G,後來發現只要改成2G以下就可以了
但我不知道為甚麼會這樣,可能跟JVM的Memory limit有關,也有可能跟系統有關
總之就是把$HADOOP/conf/hadoop-site.xml加上/修改以下即可
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx2048m</value>
<description>Java opts for the task tracker child processes.
The following symbol, if present, will be interpolated: @taskid@ is replaced
by current TaskID. Any other occurrences of '@' will go unchanged.
For example, to enable verbose gc logging to a file named for the taskid in
/tmp and to set the heap maximum to be a gigabyte, pass a 'value' of:
-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc
The configuration variable mapred.child.ulimit can be used to control the
maximum virtual memory of the child processes.
</description>
</property>
2. 昨天遇到另外一種原因,也會照成出現error reading tast output
似乎是因為硬碟空間滿了之類的
我後來發現我把所有node的log檔都寫到同一台node的某個資料夾
結果造成那台node的硬碟空間不足
後來把$HADOOP/conf/hadoop-env.sh裡的HADOOP_LOG_DIR改成/tmp底下
也就是每個node都把自己的log寫到自己的/tmp資料夾底下後在重新啟動即可
( 當然要記得砍掉之前佔掉硬碟空間的log)
HBase:
* 安裝完Hbase後要跑Hbase程式卻說找不到class?
java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
這可能是因為忘記告訴Hadoop要去哪裡找Hbase的classpath
所以要在$Hadoop_HOME/conf/hadoop-env.sh加上以下:
export HBASE_HOME=/usr/local/hbase-0.19.2
export HADOOP_CLASSPATH=$HBASE_HOME/conf:$HBASE_HOME/hbase-0.19.2.jar:$HBASE_HOME/lib
接著重新啟動Hadoop和Hbase應該就可以了
* thrift server為甚麼啟動以後就卡住不動了?
個人猜想,其實他不是卡住了...他只是在等待連線
所以我的作法就是讓他在背景執行
todo@hadoop0:/usr/local/hbase-0.19.2$ bin/hbase thrift start &
09/06/01 20:20:00 INFO ThriftServer: starting HBase Thrift server on port 9090
之後要砍掉的話就直接用kill砍掉