這邊是簡單紀錄一下我遇到的問題

有些解決了,所以紀錄一下解法

有些沒辦法解決,也希望看有沒有人可以幫忙解決的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砍掉

 

arrow
arrow
    全站熱搜

    austintodo 發表在 痞客邦 留言(0) 人氣()