map reduce卡住

最近在跑资料的时候遇到了一些问题

在这边先付上软体资讯
https://github.com/jgurtowski/ ... wtie2

我的Hadoop是0.20.203板的
用ESXI模拟出一台MASTER两台SLAVE
规格如果需要可以另外附上

我遇到的问题是跑Hadoop遇到大多有四种状况

1.卡在map0% reduce0%,网页也没有job
2.卡在map100% reduce100%,没反应,网页有Jobs,但也是100%没反应。
3.卡在map100% reduce100%,网页有Jobs,最后进入Failed Jobs。
4.Failed Jobs一次,之后成功,然后大概可以跑2个档案之后又挂掉进入2或3的状态。

对于Hadoop还不是太熟悉,研究中,只是一直不能解决这些问题,想请各位帮帮忙。
如果需要任何资料我都可以提供,拜托各位了

fish - Hadooper

赞同来自:

哇,为何还用0.20这么老的版本~   在进入2或3状态时,看看jobtracker的log,查找其中与map100% reduce100% 对应的任务号,看看任务处于什么状态?   当map100% reduce100%的时候,上到reduce执行所在的tasktracker,看看那些reduce的进程还在么?(可以ps ax | fgrep attemp_xxxx,后面这个attemp_xxx是reduce的名字)如果reduce进程还在,jstack看看这些reduce进程都在干嘛。

felix0221

赞同来自:

好的,我看看,因為該程式只支援這版本的Hadoop...

felix0221

赞同来自:

是最近有发现,会有Node死掉,所以卡住,但不知道怎么死的。

felix0221

赞同来自:

那状态1我该如何处理呢?

fish - Hadooper

赞同来自:

如果有Node死掉,需要排查一下死掉的原因。 不知是其中的TaskTracker死,还是机器直接down掉了?   如果TaskTracker死,看看它的log中有没什么线索。若log是滚得好好的中途突然断了,有可能是Linux oom Killer杀掉的TaskTracker。可以执行dmesg看看其中是否有oom kill字样以验证猜测。   如果真是oom killer,TaskTracker设置的max slot降低一些,降低应用在单机的并发数,或者优化一下map/reduce task,节省些内存的消耗。

felix0221

赞同来自:

好的,我試試看。 不知道和我的環境架設是否有關係?   一般來說死掉之後都會使用/usr/local/hadoop/bin/hadoop-daemon.sh start datanode來重設 而不是機器的死掉,在50030的頁面上原本為2的Nodes會變為1,最後是0,然後就卡住了。

fish - Hadooper

赞同来自:

那就是TaskTracker挂了,查查它的log看有没收获吧,然后再看看dmesg。 可能你需要调整一下mapred-site.xml中的mapred.tasktracker.map.tasks.maximum、mapred.tasktracker.reduce.tasks.maximum配置。

felix0221

赞同来自:

我一直不太會看Log,能不能請大大教我呢?hadoop-hadoop-datanode-master.log 9642439 bytes Jun 16, 2016 11:19:32 PMhadoop-hadoop-datanode-master.log.2016-06-13 10293698 bytes Jun 13, 2016 10:37:46 AMhadoop-hadoop-datanode-master.log.2016-06-14 41576579 bytes Jun 14, 2016 11:30:10 PMhadoop-hadoop-datanode-master.log.2016-06-15 310198 bytes Jun 15, 2016 11:59:10 PMhadoop-hadoop-datanode-master.out 0 bytes Jun 15, 2016 7:47:26 AMhadoop-hadoop-datanode-master.out.1 0 bytes Jun 14, 2016 9:50:42 AMhadoop-hadoop-datanode-master.out.2 0 bytes Jun 14, 2016 6:29:24 AMhadoop-hadoop-datanode-master.out.3 0 bytes Jun 14, 2016 5:37:57 AMhadoop-hadoop-datanode-master.out.4 0 bytes Jun 14, 2016 12:07:16 AMhadoop-hadoop-datanode-master.out.5 0 bytes Jun 13, 2016 2:50:06 AMhadoop-hadoop-jobtracker-master.log 78902 bytes Jun 16, 2016 11:11:31 PMhadoop-hadoop-jobtracker-master.log.2016-05-31 6789 bytes May 31, 2016 9:17:58 AMhadoop-hadoop-jobtracker-master.log.2016-06-01 75565 bytes Jun 1, 2016 4:10:43 PMhadoop-hadoop-jobtracker-master.log.2016-06-02 1320 bytes Jun 2, 2016 4:11:25 PMhadoop-hadoop-jobtracker-master.log.2016-06-03 176 bytes Jun 3, 2016 11:36:58 AMhadoop-hadoop-jobtracker-master.log.2016-06-04 176 bytes Jun 4, 2016 11:37:00 AMhadoop-hadoop-jobtracker-master.log.2016-06-05 176 bytes Jun 5, 2016 11:37:03 AMhadoop-hadoop-jobtracker-master.log.2016-06-06 176 bytes Jun 6, 2016 11:37:05 AMhadoop-hadoop-jobtracker-master.log.2016-06-07 330 bytes Jun 7, 2016 8:23:27 PMhadoop-hadoop-jobtracker-master.log.2016-06-08 176 bytes Jun 8, 2016 11:37:09 AMhadoop-hadoop-jobtracker-master.log.2016-06-09 449943 bytes Jun 9, 2016 11:40:28 PMhadoop-hadoop-jobtracker-master.log.2016-06-10 467765 bytes Jun 10, 2016 11:38:04 PMhadoop-hadoop-jobtracker-master.log.2016-06-11 282882 bytes Jun 11, 2016 11:52:50 PMhadoop-hadoop-jobtracker-master.log.2016-06-12 528069 bytes Jun 12, 2016 11:59:58 PMhadoop-hadoop-jobtracker-master.log.2016-06-13 331106 bytes Jun 13, 2016 11:59:57 PMhadoop-hadoop-jobtracker-master.log.2016-06-14 696125 bytes Jun 14, 2016 11:36:14 PMhadoop-hadoop-jobtracker-master.log.2016-06-15 55403 bytes Jun 15, 2016 11:35:32 PM請問我該看哪種類型的檔案

fish - Hadooper

赞同来自:

这些都不是,得到你执行任务的机器上,找有tasktracker字样的log。

felix0221

赞同来自:

https://pan.baidu.com/s/1slAExVv 不知道這檔案是否正確,我該如何學習看Log檔案呢?今天的Log檔案還沒有出現說。   底下是我dmesg的結果 https://pan.baidu.com/s/1c1Em2GC   因為無法上傳此檔案,我丟到百度去了。  

fish - Hadooper

赞同来自:

dmesg中没看到oom killer。   tasktracker是6月11号的,在同样的目录下,找个没有后面这个日期(类似2016-06-11)的日志文件,比如名字叫hadoop-hadoop-tasktracker-slave-1.log。

felix0221

赞同来自:

https://pan.baidu.com/s/1bo3zknl   在這邊~不知道是不是大大說的。麻煩你了

fish - Hadooper

赞同来自:

是这个。 从日志看,tasktracker在中午12点49分多的时候,退出了一次,退出之前,大量的如下日志: Retrying connect to server: master/10.1.1.118:9001   它尝试连接10.1.1.118的9001端口,一直失败。10.1.1.118这台机器跑着什么服务?9001端口是什么服务的监听端口?可以到10.1.1.118这台机器上,执行netstat -antp |fgrep 9001,看看输出是什么样的。判断tasktracker当时尝试连接什么服务却一直失败。(我猜是Jobtracker?)   tasktracker在12点50分之后重新启动,之后挺正常的,可到了14:46:13时,收到TERM信号被强制停止。这个信号是外部进程发来的,你刚才发的dmesg,确定是在slave-1这台机器上执行看到的结果么?

felix0221

赞同来自:

10.1.1.118是Master   netstat -antp |fgrep 9001 tcp        0      0 10.1.1.118:9001         0.0.0.0:*               LISTEN      10150/java 目前是這樣,我再重啟一次Hadoop,然後跑一次,看看是否一樣。   再次上傳dmesg在slave-1 https://pan.baidu.com/s/1c5JrMA   麻煩您了。  

fish - Hadooper

赞同来自:

在10.1.1.118上,执行下ps ax | fgrep 10150, 看看这个进程具体是什么?

felix0221

赞同来自:

 2976 pts/1    S+     0:00 grep -F --color=auto 10150   目前狀態,我重新啟動了,然後直行卡在 MAP0% REDUCE0%。

fish - Hadooper

赞同来自:

哦,重启之后,老进程就没了。   重启之后,jobtracker页面上看active node有几个?

felix0221

赞同来自:

2個 但不知道為什麼,都卡在MAP0%,REDUCE0%。  
擷NODE取.JPG
  我強制Ctrl+C結束他,然後再跑變成 16/06/17 00:52:51 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink as 10.1.1.150:50010 16/06/17 00:52:51 INFO hdfs.DFSClient: Abandoning block blk_5614706068431371530_102637 16/06/17 00:52:57 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink as 10.1.1.150:50010 16/06/17 00:52:57 INFO hdfs.DFSClient: Abandoning block blk_5388164640321974733_102637 16/06/17 00:53:03 INFO input.FileInputFormat: Total input paths to process : 14 16/06/17 00:53:03 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink as 10.1.1.150:50010 16/06/17 00:53:03 INFO hdfs.DFSClient: Abandoning block blk_-1270354638695742904_102638 16/06/17 00:53:09 INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink as 10.1.1.150:50010 16/06/17 00:53:09 INFO hdfs.DFSClient: Abandoning block blk_4765405967104654269_102638  

fish - Hadooper

赞同来自:

java.io.IOException: Bad connect ack with firstBadLink as 10.1.1.150:50010 这个log发生在hdfs上,hdfs节点之间的网络通信不太顺畅,往datanode写数据之后没有收到正常确认。   你上面截的图片看,有一个map在running状态,虽然客户端看起来是0%,任务应该在启动中,看看下面页面中具体任务的状况,判断这个map在什么地方跑的。

felix0221

赞同来自:

看看下面页面中具体任务的状况,判断这个map在什么地方跑的。 我該點哪個部份呢?是Node嗎?
000.JPG
 

felix0221

赞同来自:

明天把大大所說的再看一遍,看看有沒有辦法解決。 請問還有哪些地方我該注意呢?

fish - Hadooper

赞同来自:

页面中Running Map Tasks是1,这个比较奇怪,应该可以到jobtracker的log里看看,这个时候是不是正好已经分配了某个task给tasktracker,而且正在等tasktracker的回应。

felix0221

赞同来自:

不好意思,我看了hadoop-hadoop-jobtracker-master.log 但裡面只有兩行字,是每次重啟都會刷新嗎?      2016-06-18 01:01:49,186 INFO org.apache.hadoop.mapred.JobTracker: SHUTDOWN_MSG:  /************************************************************ SHUTDOWN_MSG: Shutting down JobTracker at master/10.1.1.118 ************************************************************/  

fish - Hadooper

赞同来自:

这是停服务(或者重启)的时候会出现的。

felix0221

赞同来自:

由於每次卡住,都要重新啟動,所以常常重啟。   http://X.X.X.X:50060/tasktracker.jsp 我的這一頁,就其中一台slave一直是連不上的,這正常嗎?    

felix0221

赞同来自:

現在卡在Map0 R0% 看50030網頁顯示Scheduling Information內有一個任務 但Running Jobs並沒有任何任務   底下是hadoop-hadoop-jobtracker-master https://pan.baidu.com/s/1nvo2ge1    然後最後是失敗。 https://pan.baidu.com/s/1eS4pyDG 這是hadoop-hadoop-jobtracker-master   順帶一提,掛掉的好像都是slave-2

fish - Hadooper

赞同来自:

第一个log看,jobtracker把任务分配给了slave-2。 不过这里有个很奇怪的地方:“to tip task_201606191757_0002_m_000015, for tracker 'tracker_slave-2:localhost/127.0.0.1:43221'”   这里在master的眼里slave-2的地址是127.0.0.1。这个问题很大啊。 你的各个机器之间机器名跟ip的映射是由dns提供的还是配置的/etc/hosts。 如果配置的是/etc/hosts,请确保各台机器ip跟名称的对应关系是正确的,而且127.0.0.1只能对应到localhost这样的名字,不能是某个机器名。   第二个log是datanode的log(我们应该检查的是tasktracker log才对哦),不过这个datanode也挂了,挂掉的原因是无法通过网络连接到10.1.1.118:9000。slave-2机器到master之间的网络是通的么?如果ssh到slave-2,手动执行一下telnet 10.1.1.118 9000,能通么?

felix0221

赞同来自:

這也是我覺得很詭異的地方 我的/etc/hosts配置如下(皆內網且可以SSH得到) 127.0.0.1       localhost 10.1.1.118      master 10.1.1.189      slave-1 10.1.1.150      slave-2 三台是一樣的。   先放上Master的hadoop-hadoop-jobtracker-master https://pan.baidu.com/s/1jIFC9Wa​   然後是slave-2的tasktracker https://pan.baidu.com/s/1eSNmp8m     telnet 10.1.1.118 9000的執行結果為下 不知道是否算是通的。 hadoop@master:~$ telnet 10.1.1.118 9000 Trying 10.1.1.118... Connected to 10.1.1.118. 在來按CTRL+]就進入了telnet>   麻煩您了~    

fish - Hadooper

赞同来自:

是希望在slave-2上执行telnet,看看是否能通到master。我看你这命令是在master上执行的?   另外,tasktracker退出比较诡异,最后几行log:
2016-06-19 18:00:50,916 INFO org.apache.hadoop.mapred.TaskTracker: Task attempt_201606191757_0002_m_000015_0 is done.
2016-06-19 18:00:50,917 INFO org.apache.hadoop.mapred.TaskTracker: reported output size for attempt_201606191757_0002_m_000015_0  was -1
2016-06-19 18:00:50,923 INFO org.apache.hadoop.mapred.TaskTracker: addFreeSlot : current free slots : 2
2016-06-19 18:00:51,008 INFO org.apache.hadoop.util.ProcessTree: Killing process group17585 with signal TERM. Exit code 0
2016-06-19 18:00:51,009 INFO org.apache.hadoop.mapred.JvmManager: JVM : jvm_201606191757_0002_m_-1044131227 exited with exit code 0. Number of tasks it ran: 1
2016-06-19 18:00:51,010 INFO org.apache.hadoop.mapred.TaskTracker: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down TaskTracker at slave-2/10.1.1.150
************************************************************/
看起来分配过来的attempt_201606191757_0002_m_000015_0已经成功执行完了,很奇怪的处理完成任务之后自己退出了。 这里比较可疑的是Killing process group17585 with signal TERM. Exit code 0。你到其它正常的tasktracker(就是正常的slave)的tasktracker的log中,查找一下有没有“Killing process”这样的关键字在那些正常的tasktracker中出现。

felix0221

赞同来自:

也是這樣的結果。hadoop@slave-2:~$ telnet 10.1.1.118 9000 Trying 10.1.1.118... Connected to 10.1.1.118. Escape character is '^]'.   應該都是對的,三台的hostname指令結果 Master:master,slave-1:slave-1,slave-2:slave-2 也是有的,但我懷疑它要掛了,目前卡M 100% R 100% 看時間上來說,應該是剛好符合的,要掛掉的時間,所以問題應該就在那邊。
2016-06-19 19:25:17,888 INFO org.apache.hadoop.mapred.TaskTracker: Task attempt_201606191757_0009_m_000014_0 is done.
2016-06-19 19:25:17,889 INFO org.apache.hadoop.mapred.TaskTracker: reported output size for attempt_201606191757_0009_m_000014_0  was -1
2016-06-19 19:25:17,889 INFO org.apache.hadoop.mapred.TaskTracker: addFreeSlot : current free slots : 2
2016-06-19 19:25:18,045 INFO org.apache.hadoop.util.ProcessTree: Killing process group10170 with signal TERM. Exit code 0
2016-06-19 19:25:18,047 INFO org.apache.hadoop.mapred.JvmManager: JVM : jvm_201606191757_0009_m_-847780686 exited with exit code 0. Number of tasks it ran: 1
2016-06-19 19:25:18,048 INFO org.apache.hadoop.mapred.TaskTracker: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down TaskTracker at slave-1/10.1.1.189
************************************************************/



fish - Hadooper

赞同来自:

/etc/hosts的问题,每台机器的hostname都设置正确了么,比如在slave-2机器上执行hostname命令,输出的是什么?

felix0221

赞同来自:

想問在Active Task Trackers頁面中Seconds since heartbeat代表什麼意思呢 發現slave-2的這個值一直越來越高,但slave-1只會在0-3內跳越。 最後slave-2就掛了。

fish - Hadooper

赞同来自:

接下来只能做几件事情看是否能获得更多线索: 1. 把Hadoop的log级别设置到DEBUG。 2. 确认每次Killing process group后面那个数字,是不是就是你的tasktracker的进程ID(你可以再启动任务之前,先jps确认一下tasktracker的进程ID)。 3. 果你能编译hadoop的话,在ProcessTree.java的killProcessGroup方法中,加上(new Exception()).printStackTrace(),看看是谁调到的这里。如果编译不了,尝试使用jdwp远程调试tasktracker,在ProcessTree类的killProcessGroup方法中加断点,当断点命中时,打印下调用栈确认逻辑是怎么跑到这里的。

felix0221

赞同来自:

好,我可能要時間查下資料。

felix0221

赞同来自:

Killing process group跟tasktracker貌似不一樣,我看了三次,就slave-1掛掉看slave-1的tasktracker.log,slave-2掛掉看slave-2的tasktracker.log,都不是同一個ID   然後好像只要開始跑任務一定會掛一個node。 就開始跑之後,jps會發現 TaskTracker DataNode 然後跑任務後SSH會斷線,再次登入然後JPS,這兩個就消失,不知道為什麼? 然後掛一個node後就能跑了(要等心跳時間結束),跑完後會有一陣子都能跑,之後會再掛一個node,然後就需要重開再來一次。  DEBUG我開了,但不知道如何使用呢?

felix0221

赞同来自:

有時候,跑完第一個掛掉,心跳時間結束,第二個也會跟著掛。

fish - Hadooper

赞同来自:

我的意思是,先jps看到TaskTracker对应的那个数字(记下来),然后Tasktracker死之后,跟log中kill 后面那个数字对比一下,看看是不是相等。 不是看不同tasktracker中的数字是否一样,PID每次是系统分配的,基本都不可能一样。只是想确定,TaskTracker挂掉是不是因为那句Kill所对应的操作导致的。

felix0221

赞同来自:

今日測試結果 先running tasks的機器會掛掉,在網路上看到一些文章,不知道跟內存有無關聯。     S2 18199 TaskTracker 18267 Jps 17982 DataNode   2016-06-20 14:39:17,325 INFO org.apache.hadoop.util.ProcessTree: Killing process group18302 with signal TERM. Exit code 0 編號相近,但測試結果都不相同   另外TaskTracker跟DataNode消失時,我整台slave的SSH都會斷線,不知道這有沒有關係? 有趣的發現是成功開始跑的JPS是 20370 Child 20424 Jps 20043 DataNode 20366 Child 20175 TaskTracker   這不知道有沒有關聯   想問大大,加上DEBUG後 多出了 attempt_201606201425_0001_r_000000_0: log4j:WARN No appenders could be found for logger (org.apache.hadoop.hdfs.DFSClient). attempt_201606201425_0001_r_000000_0: log4j:WARN Please initialize the log4j system properly.   該如何修改  

fish - Hadooper

赞同来自:

整个slave网络断线整个是某台特定机器如此还是不确定哪台slave发生? 如果是确定的,在老断线的slave上先不要启动tasktracker,是否可以正常工作?   关于LOG,Warn提示是log4j的配置中找不到appender。这个是WARN,按道理说,及时log级别是原来的INFO,也会出这个日志,你是怎么做的log级别修改呢?

felix0221

赞同来自:

測試一天是不特定的,slave-1跟slave-2都有可能發生。 試過只啟動一台機器,但沒有成功過。   log4j中原本是INFO的設定被我改成DEBUG。 因為之前有提到,要DRBUG級別的LOG,我找到的方法是將conf/log4j.properties這個檔案的 hadoop.root.logger=INFO,console改為DEBUG,不知道這方法對不對?

fish - Hadooper

赞同来自:

“只启动一台机器,但没有成功过”,是指任务没有跑成功,还是问题没有复现成功?   log级别,log4j.properties中的内容一般会被hadoop-daemon.sh覆盖掉(老版本我记得应该也是这样),修改log级别得是修改hadoop-daemon.sh中的HADOOP_ROOT_LOGGER配置。

felix0221

赞同来自:

開兩台機器的情況,死了一台,單一一台有機率不會死 但只有一台我試驗的情況都是死掉的說

fish - Hadooper

赞同来自:

跑简单的样例应用(比如pi、wordcount之类的)也会死么?

felix0221

赞同来自:

我找個簡單的範例試試看好了~"~ 我有點懷疑試資料量突然變得太大 以前用70M跑大概沒事情...現在都跑2G以上。

fish - Hadooper

赞同来自:

所以一直怀疑是被oom killer,但之前操作好像没有找到证据。 你的slave机器物理内存是多少的?

felix0221

赞同来自:

他死的速度有點快。 幾乎是命令下完的15秒內就會掛掉...  我用ESXI模擬的,兩台都給16G的内存。 置於安裝ESXI的主機有128G的實體内存。   我有些事情...可能要晚上才能回...跟你說聲不好意思...

fish - Hadooper

赞同来自:

虚拟机情况,嗯...不一定能用到16G。 以下配置在你的集群中是什么样的? 1. hadoop-env.sh中,HADOOP_NAMENODE_OPTS、HADOOP_DATANODE_OPTS、HADOOP_JOBTRACKER_OPTS、HADOOP_TASKTRACKER_OPTS,其实就是想知道你启动这些服务进程的时候,给的JavaHeap是多少,也可以执行ps ax | fgrep <TaskTracker进程号> | fgrep --color Xmx (中间的TaskTracker进程号换成不同的进程号),看看各个进程中Java Heap的设置是多少。 2. mapred-site.xml中mapred.tasktracker.map.tasks.maximum、mapred.tasktracker.reduce.tasks.maximum的值配的是多少? 3. mapred-site.xml中,mapred.child.java.opts配置的是多少?

felix0221

赞同来自:

這是hadoop-env.sh的內容 # Set Hadoop-specific environment variables here. # The only required environment variable is JAVA_HOME.  All others are # optional.  When running a distributed configuration it is best to # set JAVA_HOME in this file, so that it is correctly defined on # remote nodes. # The java implementation to use.  Required. # export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 # Extra Java CLASSPATH elements.  Optional. # export HADOOP_CLASSPATH= # The maximum amount of heap to use, in MB. Default is 1000. export HADOOP_HEAPSIZE=10240 # Extra Java runtime options.  Empty by default. export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true # Command specific options appended to HADOOP_OPTS when specified export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS" export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS" export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS" export HADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS" export HADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS" # export HADOOP_TASKTRACKER_OPTS= # The following applies to multiple commands (fs, dfs, fsck, distcp etc) # export HADOOP_CLIENT_OPTS # Extra ssh options.  Empty by default. # export HADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR" # Where log files are stored.  $HADOOP_HOME/logs by default. # export HADOOP_LOG_DIR=${HADOOP_HOME}/logs # File naming remote slave hosts.  $HADOOP_HOME/conf/slaves by default. # export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves # host:path where hadoop code should be rsync'd from.  Unset by default. # export HADOOP_MASTER=master:/home/$USER/src/hadoop # Seconds to sleep between slave commands.  Unset by default.  This # can be useful in large clusters, where, e.g., slave rsyncs can # otherwise arrive faster than the master can service them. # export HADOOP_SLAVE_SLEEP=0.1 # The directory where pid files are stored. /tmp by default. # export HADOOP_PID_DIR=/var/hadoop/pids # A string representing this instance of hadoop. $USER by default. # export HADOOP_IDENT_STRING=$USER # The scheduling priority for daemon processes.  See 'man nice'. # export HADOOP_NICENESS=10   底下是mapred-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration>     <property>                 <name>mapred.job.tracker</name>                 <value>master:9001</value>                 <description>The host and port that the MapReduce job tracker runs                 at.  If "local", then jobs are run in-process as a single map                 and reduce task.                 </description>     </property> </configuration>     我並沒有配置mapred.child.java.opts,請問我該配置多少才合理呢? 麻煩您了  

fish - Hadooper

赞同来自:

好像mapred.tasktracker.map.tasks.maximum跟mapred.tasktracker.reduce.tasks.maximum也都没配?   你一个map和reduce task大概会使用的内存是多少?是否可以估计出来?

felix0221

赞同来自:

我不大會估計說,但我in的兩個檔案大小都差不多是900多G。

fish - Hadooper

赞同来自:

task所需要的内存不一定与处理的数据量正比。比如你如果不是将数据全部缓存到map/reduce内存,而是读取一行,处理一行,context.write直接输出,这样是不用占多少内存的,哪怕处理的总数据量很大。

felix0221

赞同来自:

基本上已經Map過一次才執行這個步驟的。 先試著設定預設值值兩倍不知道可不可以?

fish - Hadooper

赞同来自:

单台机器一共就16G内存,怎么设置“两倍”? 要不你就先设置2G试试,比如 mapred.tasktracker.map.tasks.maximum为4 mapred.tasktracker.reduce.tasks.maximum为2 mapred.child.java.opts为-Xmx2g。

felix0221

赞同来自:

結果依樣,馬上就有一個掛了。   我在我的Hadoop中並沒有看到hadoop-daemon.sh說 想請問"ProcessTree.java的killProcessGroup方法中"會放在哪個JAR檔是否我重壓進去就可以呢?   我整理一下我們現在的結果,發篇新的好了。這篇好長~XD

要回复问题请先登录注册