hadoop報錯總結02

hadoop報錯總結01:https://blog.csdn.net/qq_19968255/article/details/82803768

1.當腳本在運行時報錯信息如下:

Examining task ID: task_201201061122_0007_m_000002 (and more) from job job_201201061122_0007

Exception in thread "Thread-23" java.lang.RuntimeException: Error while reading from task log url

at org.apache.hadoop.hive.ql.exec.errors.TaskLogProcessor.getErrors(TaskLogProcessor.java:130)

at org.apache.hadoop.hive.ql.exec.JobDebugger.showJobFailDebugInfo(JobDebugger.java:211)

at org.apache.hadoop.hive.ql.exec.JobDebugger.run(JobDebugger.java:81)

at java.lang.Thread.run(Thread.java:662)

Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: http://10.200.187.27:50060/tasklog?taskid=attempt_201201061122_0007_m_000000_2&start=-8193

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)

at java.net.URL.openStream(URL.java:1010)

at org.apache.hadoop.hive.ql.exec.errors.TaskLogProcessor.getErrors(TaskLogProcessor.java:120)

... 3 more

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask

MapReduce Jobs Launched:

 

將http://xxx:50060/tasklog?taskid=attempt_201201061122_0007_m_000000_2&start=-8193這段複製出來,輸入到IE瀏覽器的地址欄內,然後出現這樣的信息:

運行一次hadoop的時候出現java heap error。字面意思分配堆的時候出現錯誤,我們知道應用程序的動態內存的分配均在堆裏面。這裏提示堆錯誤,那必然是內存不夠用了。那麼這個namenode內存的大小該怎麼取值呢?

namenode管理着集羣裏面所有文件的信息。簡單根據文件信息給出一個準確計算內存大小的公式是不現實的。

hadoop默認namenode內存的大小爲1000M,這個值對於數百萬的文件來說是足夠的,可以保守地設置每百萬數據塊需要1000MB內存。

例如,有這樣一個場景,一個含有200個節點的集羣,每個節點有一個24TB的磁盤,hadoop的block的大小爲128MB,有三份拷貝總共需要塊的數目大概在200萬或者更多,那麼內存大致需要多少?

首先計算可以有多少塊:

(200*24000000MB)/(128MB*3)=12500,000。

然後保守估計需要多少內存:

12500,000*1000MB/1000,000=12,500MB

從上面的計算結果看出,將namenode內存的大小設置爲12,000MB這個數量級別可以滿足。

計算大致的值之後,怎麼設置呢?

hadoop配置文件,hadoop-env.sh中有個選項HADOOP_NAMENODE_OPTS,此JVM選項是用來設置內存大小的。比如:

HADOOP_NAMENODE_OPTS=-Xmx2000m 

那麼就是給namenode分配了2000MB的空間。

如果改變了namenode的內存大小,那麼secondarynamenode的內存的大小同樣也要改變,其選項是HADOOP_SECONDARYNAMENODE_OPTS。

sqoop  The driver has not received any packets from the server

執行 list-tables 和 list_databases都OK,但是import有問題,猜測是MAP會分發到其他兩個hadoop節點上,也會連接mysql,估計還是mysql的權限問題。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.jdbc.url=jdbc:mysql://localhost:3306/totosea?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false

autoReconnect

當數據庫連接異常中斷時,是否自動重新連接?

failOverReadOnly

自動重連成功後,連接是否設置爲只讀?

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

3.Hive保留關鍵字的支持

Failed to recognize predicate 'date'. Failed rule: 'identifier' in column specification

不使用此關鍵字

conf->hive-site.xml

<property>

    <name>hive.support.sql11.reserved.keywords</name>

    <value>false</value>

</property>

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

4.Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep解決方法

14/03/26 23:10:04 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

14/03/26 23:10:05 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

14/03/26 23:10:06 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 3 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

14/03/26 23:10:07 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 4 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

在使用sqoop工具對hive表導出到mysql中提示該信息,一直重試。通過網上查閱資料,這個問題是指定hdfs路徑不嚴謹導致。

報錯寫法

sqoop export --connect jdbc:mysql://c6h2:3306/log --username root --password 123 --table dailylog --fields-terminated-by '\001' --export-dir '/user/hive/warehouse/weblog_2013_05_30'

解決方法

sqoop export --connect jdbc:mysql://c6h2:3306/log --username root --password 123 --table dailylog --fields-terminated-by '\001' --export-dir 'hdfs://cluster1:端口/user/hive/warehouse/weblog_2013_05_30'

這裏加上hdfs協議和集羣名稱,我這裏是hadoop2的ha集羣模式。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

5.DFSClient: Caught exception

19-10-2018 05:52:19 CST import_initdayuser INFO - java.lang.InterruptedException

19-10-2018 05:52:19 CST import_initdayuser INFO -    at java.lang.Object.wait(Native Method)

19-10-2018 05:52:19 CST import_initdayuser INFO -    at java.lang.Thread.join(Thread.java:1281)

19-10-2018 05:52:19 CST import_initdayuser INFO -    at java.lang.Thread.join(Thread.java:1355)

19-10-2018 05:52:19 CST import_initdayuser INFO -    at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.closeResponder(DFSOutputStream.java:609)

19-10-2018 05:52:19 CST import_initdayuser INFO -    at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.endBlock(DFSOutputStream.java:370)

19-10-2018 05:52:19 CST import_initdayuser INFO -    at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:546)

這是native庫不兼容造成的,目前算是Hadoop的一個bug,還沒有解決方案,可以忽略掉。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章