Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2022-06-30, 04:00

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 15 篇文章 ]  前往頁數 上一頁  12
發表人 內容
 文章主題 : Re: 關於連續執行 Hadoop Map 運算時,遇到的問題
文章發表於 : 2013-04-09, 18:05 
離線

註冊時間: 2013-03-27, 13:40
文章: 5
非常謝謝您的回覆!

已在 code 加入 context.getCounter("MY_GROUP","MY_COUNTER").increment(1);
有輸出 MY_COUNTER 數目
但結果與先前相同,會有斷線問題

關於記憶體
有調整conf內的 hadoop-env.sh
export HADOOP_HEAPSIZE=1024
若再調高 Log 會顯示
代碼:
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

程式內有加入 conf.set("mapred.child.java.opts","-Xmx1000m");
還需要在每個 Node 的 mapred-site.xml 加入
代碼:
  <name>mapred.child.java.opts</name>
  <value>-Xmx1024m</value>

內容嗎?

若原因是 Map 記憶體不足,是否應該會顯示 Error: Java heap space 等的錯誤中斷或 Log 內紀錄呢?

關於/etc/hosts 已加入
代碼:
10.5.32.173 7900-PUB15
10.5.32.174 7900-PUB16
10.5.32.172 7900-PUB14
127.0.0.1 localhost

名稱設定與 Cygwin 下的 hostname 指令結果相符


一個 Job 跑 100 個 20~60M 的 txt 檔,反覆執行 100 次 Job
並非每次 Job 都會發生 node 離線問題,如:

前兩次 Job 很順利,無任何問題,1 Task 執行約10秒內

在第三次 Job 時 attempt_201304091538_0003_m_000017_0 Task 導致與 1 node 斷線
代碼:
2013-04-09 15:43:05,884 INFO org.apache.hadoop.mapred.JobTracker: Adding task 'attempt_201304091538_0003_m_000017_0' to tip task_201304091538_0003_m_000017, for tracker 'tracker_7900-PUB14:127.0.0.1/127.0.0.1:58424'
2013-04-09 15:45:20,987 INFO org.apache.hadoop.mapred.JobTracker: attempt_201304091538_0003_m_000017_0 is 135102 ms debug.
2013-04-09 15:48:40,976 INFO org.apache.hadoop.mapred.JobTracker: attempt_201304091538_0003_m_000017_0 is 335091 ms debug.
2013-04-09 15:52:00,965 INFO org.apache.hadoop.mapred.JobTracker: attempt_201304091538_0003_m_000017_0 is 535080 ms debug.
2013-04-09 15:55:20,955 INFO org.apache.hadoop.mapred.JobTracker: Removed completed task 'attempt_201304091538_0003_m_000017_0' from 'tracker_7900-PUB14:127.0.0.1/127.0.0.1:58424'
2013-04-09 15:55:20,956 INFO org.apache.hadoop.mapred.JobTracker: attempt_201304091538_0003_m_000017_0 is 735069 ms debug.
2013-04-09 15:55:20,956 INFO org.apache.hadoop.mapred.JobTracker: Launching task attempt_201304091538_0003_m_000017_0 timed out.


然後剩下 node 繼續順利執行 Job 至第九次 Job
代碼:
2013-04-09 16:03:47,022 INFO org.apache.hadoop.mapred.JobTracker: Adding task 'attempt_201304091538_0009_m_000046_0' to tip task_201304091538_0009_m_000046, for tracker 'tracker_7900-PUB16:127.0.0.1/127.0.0.1:62247'
2013-04-09 16:05:20,963 INFO org.apache.hadoop.mapred.JobTracker: attempt_201304091538_0009_m_000046_0 is 93940 ms debug.
2013-04-09 16:08:40,926 INFO org.apache.hadoop.mapred.JobTracker: attempt_201304091538_0009_m_000046_0 is 293903 ms debug.
2013-04-09 16:12:00,960 INFO org.apache.hadoop.mapred.JobTracker: attempt_201304091538_0009_m_000046_0 is 493937 ms debug.
2013-04-09 16:15:20,965 INFO org.apache.hadoop.mapred.TaskInProgress: Error from attempt_201304091538_0009_m_000046_0: Lost task tracker: tracker_7900-PUB16:127.0.0.1/127.0.0.1:62247
2013-04-09 16:15:20,965 INFO org.apache.hadoop.mapred.JobTracker: Removed completed task 'attempt_201304091538_0009_m_000046_0' from 'tracker_7900-PUB16:127.0.0.1/127.0.0.1:62247'
2013-04-09 16:15:20,965 INFO org.apache.hadoop.mapred.JobTracker: attempt_201304091538_0009_m_000046_0 is 693942 ms debug.
2013-04-09 16:15:20,965 INFO org.apache.hadoop.mapred.JobTracker: Launching task attempt_201304091538_0009_m_000046_0 timed out.

在與 1 node 斷線,如此到全部 node 斷線,Job 也不會中斷
想不懂為何相同的輸入有些 Job 可順利執行,但會在有些Job內的 Task 會發生問題

目前想嘗試在 Linux 下執行看看,或用 VM 虛擬 Linux 環境下執行
希望能解決此斷線問題


附加檔案:
檔案註釋: Log
4-9 Log.zip [88.34 KiB]
被下載 363 次
回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 關於連續執行 Hadoop Map 運算時,遇到的問題
文章發表於 : 2013-04-09, 22:39 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
jiunhauye 寫:
你前面說的我還能了解不好意思,但不太了解把Counter做increment~就能解決此情況的原因是?


Counter 作 increment 的時候,TaskTracker (工人) 會向 JobTracker (工頭) 回報狀態 (Counter 的值)
當工人都不跟工頭打卡的時候,當然就會被炒魷魚。
如果 10 分鐘以內,工人有乖乖打卡,那工頭就不會記上一筆,說工人工作不認真(列入黑名單)。

- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 關於連續執行 Hadoop Map 運算時,遇到的問題
文章發表於 : 2013-04-09, 23:13 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
我回過頭去查 JobTracker 會產生 * ms debug 的程式碼
雖然我不是很確定 (pair.getValue()).longValue() 是在哪裡設定的,
但我查過我 15 台 Linux 的 JobTracker.log 只有出現四次。

由於 now 是 JobTracker 的時間,
假設 pair (Map.Entry<TaskAttemptID, Long> 型態)是在 TaskTracker 接到 TaskAttempt 時根據本機時間產生的時間
會有很高的 ms 差異,那是否代表這三台電腦的「時間」是不一致的呢?

我們的 Linux 叢集有做 NTP 校時,所以我查 JobTracker log 出現四次的 ms debug 數字都不高。

代碼:
~$ grep "ms debug" /var/log/hadoop/hadoop-hadoop-jobtracker-hadoop.log
2013-04-09 11:55:18,691 INFO org.apache.hadoop.mapred.JobTracker: attempt_201303260111_0976_m_000000_0 is 2074 ms debug.
2013-04-09 13:55:18,695 INFO org.apache.hadoop.mapred.JobTracker: attempt_201303260111_0985_m_000003_0 is 42 ms debug.
2013-04-09 16:18:38,699 INFO org.apache.hadoop.mapred.JobTracker: attempt_201303260111_0987_m_000000_0 is 2154 ms debug.
2013-04-09 20:55:18,707 INFO org.apache.hadoop.mapred.JobTracker: attempt_201303260111_1036_m_000002_0 is 2403 ms debug.


- Jazz

代碼:
367     public void run() {
368       while (true) {
369         try {
370           // Every 3 minutes check for any tasks that are overdue
371           Thread.sleep(TASKTRACKER_EXPIRY_INTERVAL/3);
372           long now = clock.getTime();
373           if(LOG.isDebugEnabled()) {
374             LOG.debug("Starting launching task sweep");
375           }
376           synchronized (JobTracker.this) {
377             synchronized (launchingTasks) {
378               Iterator<Map.Entry<TaskAttemptID, Long>> itr =
379                 launchingTasks.entrySet().iterator();
380               while (itr.hasNext()) {
381                 Map.Entry<TaskAttemptID, Long> pair = itr.next();
382                 TaskAttemptID taskId = pair.getKey();
383                 long age = now - (pair.getValue()).longValue();
384                 LOG.info(taskId + " is " + age + " ms debug.");
385                 if (age > TASKTRACKER_EXPIRY_INTERVAL) {
386                   LOG.info("Launching task " + taskId + " timed out.");
387                   TaskInProgress tip = null;
388                   tip = taskidToTIPMap.get(taskId);


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 關於連續執行 Hadoop Map 運算時,遇到的問題
文章發表於 : 2013-04-15, 22:32 
離線

註冊時間: 2013-04-09, 16:11
文章: 2
jazz 寫:
jiunhauye 寫:
你前面說的我還能了解不好意思,但不太了解把Counter做increment~就能解決此情況的原因是?


Counter 作 increment 的時候,TaskTracker (工人) 會向 JobTracker (工頭) 回報狀態 (Counter 的值)
當工人都不跟工頭打卡的時候,當然就會被炒魷魚。
如果 10 分鐘以內,工人有乖乖打卡,那工頭就不會記上一筆,說工人工作不認真(列入黑名單)。

- Jazz


感謝Jazz大大的解說~


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 關於連續執行 Hadoop Map 運算時,遇到的問題
文章發表於 : 2013-12-13, 17:50 
離線

註冊時間: 2013-12-13, 17:48
文章: 1
不好意思,想請問一下
我最近使用hortonwork的hdp on windows
也發生了一樣的狀況
想問這個問題後來是怎樣解決的呢?


回頂端
 個人資料 E-mail  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 15 篇文章 ]  前往頁數 上一頁  12

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 3 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作