日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數據開發常見問題

本文匯總了數據開發時的常見問題。

環境變量過多或者參數值過長時,為什么提交作業失敗?

  • 問題現象:提交作業時,報錯信息如下。

    Message: FailedReason:FailedReason:[[JOB_ENGINE][JOB_ENGINE_START_JOB_FAILED/ERR-200001] Failed to execute job: [FJ-xxxx]].
  • 問題分析:數據開發系統存在單項目變量總數和長度限制。如果環境變量過多或者參數值過長(大于1024)都會導致提交作業失敗。

  • 解決方案:如果確實存在大量需要編輯的變量,請分項目添加變量,確保單項目變量數和長度較小。

為什么Shell作業狀態和相關的YARN Application狀態不一致?

  • 問題現象:在數據開發頁面編輯Shell作業類型,任意編寫一個會拉起YARN Application的作業,例如hive -f xxx.sql。在YARN Application未結束前,單擊作業終止按鈕,此時數據開發作業狀態為KILLED,但YARN Application仍然會繼續運行,直到自然結束。

  • 問題分析:終止Shell作業時會給Shell進程發送終止信號,如果YARN Application的驅動程序和Shell進程不存在父子進程關系,則YARN Application不會隨Shell進程的終止而終止。例如Hive、sqoop、spark-submit(cluster模式)均存在這種情況。

  • 解決方案:建議不要使用Shell類型作業開發Hive、Spark或Sqoop等作業,盡可能使用原生作業類型(例如,Hive、Spark或Sqoop等類型)進行開發,這些作業類型存在一定的關聯機制,可以確保作業驅動程序本身和YARN Application狀態的一致性。

創建作業和執行計劃的區別是什么?

  • 創建作業

    在E-MapReduce中創建作業,實際只是創建了作業如何運行的配置,該配置中包括該作業要運行的JAR包、數據的輸入輸出地址以及一些運行參數。該配置創建好后,給它命名即定義了一個作業。

  • 執行計劃

    執行計劃是將作業與集群關聯起來的一個紐帶:

    • 可以把多個作業組合成一個作業序列。

    • 可以為作業準備一個運行集群(或者自動創建出一個臨時集群或者關聯一個已存在的集群)。

    • 可以為這個作業序列設置周期執行計劃,并在完成任務后自動釋放集群。

    • 可以在執行記錄列表上查看每一次執行的情況與對應的日志。

如何查看作業運行記錄?

提交作業后,您可以通過數據開發控制臺或YARN UI方式查看作業運行記錄。

  • 數據開發控制臺方式

    該方式適用于通過控制臺方式創建并提交作業的場景。

    1. 作業運行后,您可以在日志頁簽中查看作業運行的日志。

    2. 單擊運行記錄頁簽,可以查看作業實例的運行情況。作業運行記錄

    3. 單擊目標運行記錄右側的詳情,跳轉到運維中心,可以查看作業實例信息、提交日志和YARN容器列表。

  • YARN UI方式

    該方式適用于通過控制臺方式和命令行方式創建并提交作業的場景。

    1. 開啟8443端口。

    2. 在目標集群的集群管理頁簽下,單擊左側菜單訪問鏈接與端口

    3. 單擊YARN UI后面的鏈接。

      在使用Knox賬號訪問YARN UI頁面時,需要Knox賬號的用戶名和密碼。

    4. 在Hadoop控制臺,單擊目標作業的ID,可以查看作業運行的詳情。Hadoop控制臺

如何在OSS上查看日志?

  1. 在E-MapReduce數據開發的頁面,找到對應的工作流實例,單擊運行記錄

  2. 運行記錄區域,單擊待查看工作流實例所在行的詳情,在作業實例信息頁面查看執行集群ID。

  3. 在日志保存目錄OSS://mybucket/emr/spark下,查找執行集群ID目錄。

  4. OSS://mybucket/emr/spark/clusterID/jobs目錄下會按照作業的執行ID存放多個目錄,每個目錄下存放了這個作業的運行日志文件。

讀寫MaxCompute時,報錯java.lang.RuntimeException.Parse response failed: ‘<!DOCTYPE html>…’

  • 問題分析:可能是MaxCompute Tunnel Endpoint填寫錯誤。

  • 解決方法:輸入正確的MaxCompute Tunnel Endpoint,詳情請參見Endpoint

多個ConsumerID消費同一個Topic時為什么TPS不一致?

有可能這個Topic在公測或其他環境創建過,導致某些Consumer組消費數據不一致。

E-MapReduce中是否可以查看Worker上的作業日志?

可以。您可以通過YARN UI的方式查看Worker上的日志,詳細信息請參見YARN UI方式

為什么Spark Streaming作業已經結束,但是E-MapReduce控制臺顯示作業還處于“運行中”狀態?

  • 問題分析:Spark Streaming作業的運行模式是Yarn-Client。

  • 解決方法:因為E-MapReduce對Yarn-Client模式的Spark Streaming作業的狀態監控存在問題,所以請修改為Yarn-Cluster模式。

報錯“Error: Could not find or load main class”

檢查作業配置中作業JAR包的路徑協議頭是否是ossref,如果不是請改為ossref

如何在MR作業中使用本地共享庫?

您可以在阿里云E-MapReduce控制臺,YARN服務的配置頁面,修改mapred-site.xml頁簽如下參數。

<property>  
    <name>mapred.child.java.opts</name>  
    <value>-Xmx1024m -Djava.library.path=/usr/local/share/</value>  
  </property>  
  <property>  
    <name>mapreduce.admin.user.env</name>  
    <value>LD_LIBRARY_PATH=$HADOOP_COMMON_HOME/lib/native:/usr/local/lib</value>  
  </property>

如何在MR或Spark作業中指定OSS數據源文件路徑?

您可以在作業中指定輸入輸出數據源時使用OSS URL: oss://[accessKeyId:accessKeySecret@]bucket[.endpoint]/object/path形式,類似hdfs://

您在操作OSS數據時:

  • (建議)E-MapReduce提供了MetaService服務,支持免AccessKey訪問OSS數據,直接寫oss://bucket/object/path

  • (不建議)可以將AccessKey ID,AccessKey Secret以及Endpoint配置到Configuration(Spark作業是SparkConf,MR作業是Configuration)中,也可以在URI中直接指定AccessKey ID、AccessKey Secret以及Endpoint。

如何查看E-MapReduce服務的日志?

登錄Master節點在/mnt/disk1/log中查看對應服務的日志。

報錯"No space left on device"

  • 問題分析:

    • Master或Worker節點空間不足,導致作業失敗。

    • 磁盤空間滿導致本地Hive元數據庫(MySQL Server)異常,Hive Metastore連接報錯。

  • 解決方法:清理Master節點磁盤空間、系統盤的空間以及HDFS空間。

訪問OSS或LogService時報錯ConnectTimeoutException或ConnectionException

  • 問題分析:OSS Endpoint需要配置為公網地址,但EMR Worker節點并無公網IP,所以無法訪問。

  • 解決方法:

    • 修改OSS Endpoint地址為內網地址。

    • 使用EMR metaservice功能,不指定Endpoint。

    例如select * from tbl limit 10可以正常運行,但是執行Hive SQL: select count(1) from tbl 時報錯。修改OSS Endpoint地址為內網地址。

    alter table tbl set location "oss://bucket.oss-cn-hangzhou-internal.aliyuncs.com/xxx"
    alter table tbl partition (pt = 'xxxx-xx-xx') set location "oss://bucket.oss-cn-hangzhou-internal.aliyuncs.com/xxx"

如何清理已經完成作業的日志數據?

  • 問題描述:集群的HDFS容量被寫滿,發現/spark-history下有大量的數據。

  • 解決方法:

    1. 在Spark配置頁面的服務配置區域,查看是否有spark_history_fs_cleaner_enabled參數:

      • 是:修改參數值為true,可以周期性清理已經完成的作業的日志數據。

      • 否:在spark-defaults頁簽下,單擊自定義配置,新增spark_history_fs_cleaner_enabledtrue

    2. 單擊右上角的操作 > 重啟 All Components

    3. 執行集群操作對話框,輸入執行原因,單擊確定

    4. 在彈出的確認對話框中,單擊確定

為什么AppMaster調度啟動Task的時間過長?

  • 問題分析:作業Task數目過多或Spark Executor數目過多,導致AppMaster調度啟動Task的時間過長,單個Task運行時間較短,作業調度的Overhead較大。

  • 解決方法:

    • 減少Task數目,使用CombinedInputFormat。

    • 提高前序作業產出數據的Block Size(dfs.blocksize)。

    • 提高mapreduce.input.fileinputformat.split.maxsize

    • 對于Spark作業,在阿里云E-MapReduce控制臺,Spark服務的配置頁面,調節spark.executor.instances減少Executor數目,或者調節spark.default.parallelism降低并發數。

E-MapReduce是否提供實時計算的功能?

E-MapReduce提供Spark Streaming、Storm和Flink三種實時計算服務。

作業參數傳遞至腳本文件該如何處理?

在Hive作業中,您可以通過-hivevar選項,傳遞作業中配置的參數至腳本中。

  1. 準備腳本文件。

    腳本文件中引用變量的方式為${varname}(例如${rating})。本示例中腳本的相關信息如下:

    • 腳本名稱:hivesql.hive

    • 腳本的OSS路徑:oss://bucket_name/path/to/hivesql.hive

    • 腳本內容

      use default;
       drop table demo;
       create table demo (userid int, username string, rating int);
       insert into demo values(100,"john",3),(200,"tom",4);
       select * from demo where rating=${rating};
  2. 進入數據開發頁面。

    1. 通過阿里云賬號登錄阿里云E-MapReduce控制臺

    2. 在頂部菜單欄處,根據實際情況選擇地域和資源組

    3. 單擊上方的數據開發頁簽。

  3. 單擊待編輯項目所在行的作業編輯

  4. 新建Hive類型作業。

    1. 在頁面左側,在需要操作的文件夾上單擊右鍵,選擇新建作業

    2. 新建作業對話框中,輸入作業名稱作業描述,從作業類型下拉列表中選擇Hive作業類型。

    3. 單擊確定

  5. 編輯作業內容。

    1. 基礎設置頁面,設置參數的KeyValue,其中Key為腳本文件中的變量名,必須與腳本一致,例如ratingconfig_parameter

    2. 作業內容中必須添加-hivevar選項,以便傳遞作業中配置的參數值至腳本變量。

      -hivevar rating=${rating} -f ossref://bucket_name/path/to/hivesql.hive
  6. 執行作業。

    本示例執行結果如下。submit_log

如何使用阿里云E-MapReduce HDFS的Balancer功能以及參數調優?

  1. 登錄待配置集群任意節點。

  2. 執行以下命令,切換到hdfs用戶并執行Balancer參數。

    su hdfs
    /usr/lib/hadoop-current/sbin/start-balancer.sh -threshold 10
  3. 執行以下命令,查看Balancer運行情況:

    • 方式一

      less /var/log/hadoop-hdfs/hadoop-hdfs-balancer-emr-header-xx.cluster-xxx.log
    • 方式二

      tailf /var/log/hadoop-hdfs/hadoop-hdfs-balancer-emr-header-xx.cluster-xxx.log
    說明

    當提示信息包含Successfully字樣時,表示執行成功。

    Balancer的主要參數。

    參數

    描述

    Threshold

    默認值為10%,表示上下浮動10%。

    當集群總使用率較高時,需要調小Threshold,避免閾值過高。

    當集群新增節點較多時,您可以適當增加Threshold,使數據從高使用率節點移向低使用率節點。

    dfs.datanode.balance.max.concurrent.moves

    默認值為5。

    指定DataNode節點并發移動的最大個數。通常考慮和磁盤數匹配,推薦在DataNode端設置為4 * 磁盤數作為上限,可以使用Balancer的值進行調節。

    例如:一個DataNode有28塊盤,在Balancer端設置為28,DataNode端設置為28*4。具體使用時根據集群負載適當調整。在負載較低時,增加concurrent數;在負載較高時,減少concurrent數。

    說明

    DataNode端需要重啟來刷新配置。

    dfs.balancer.dispatcherThreads

    Balancer在移動Block之前,每次迭代時查詢出一個Block列表,分發給Mover線程使用。

    說明

    dispatcherThreads是該分發線程的個數,默認為200。

    dfs.balancer.rpc.per.sec

    默認值為20,即每秒發送的rpc數量為20。

    因為分發線程調用大量getBlocks的rpc查詢,所以為了避免NameNode由于分發線程壓力過大,需要控制分發線程rpc的發送速度。

    例如,您可以在負載高的集群調整參數值,減小10或者5,對整體移動進度不會產生特別大的影響。

    dfs.balancer.getBlocks.size

    Balancer會在移動Block前,每次迭代時查詢出一個Block列表,給Mover線程使用,默認Block列表中Block的大小為2GB。因為getBlocks過程會對RPC進行加鎖,所以您可以根據NameNode壓力進行調整。

    dfs.balancer.moverThreads

    默認值為1000。

    Balancer處理移動Block的線程數,每個Block移動時會使用一個線程。

    dfs.namenode.balancer.request.standby

    默認值為false。

    Balancer是否在Standby NameNode上查詢要移動的Block。因為此類查詢會對NameNode加鎖,導致寫文件時間較長,所以HA集群開啟后只會在Standby NameNode上進行查詢。

    dfs.balancer.getBlocks.min-block-size

    Balancer查詢需要移動的參數時,對于較小Block(默認10 MB)移動效率較低,可以通過此參數過濾較小的Block,增加查詢效率。

    dfs.balancer.max-iteration-time

    默認值為1200000,單位毫秒。

    Balancer一次迭代的最長時間,超過后將進入下一次迭代。

    dfs.balancer.block-move.timeout

    默認值為0,單位毫秒。

    Balancer在移動Block時,會出現由于個別數據塊沒有完成而導致迭代較長的情況,您可以通過此參數對移動長尾進行控制。

    DataNode的主要參數。

    參數

    描述

    dfs.datanode.balance.bandwidthPerSec

    指定DataNode用于Balancer的帶寬,通常推薦設置為100 MB/s,您也可以通過dfsadmin -setBalancerBandwidth 參數進行適當調整,無需重啟DataNode。

    例如,在負載低時,增加Balancer的帶寬。在負載高時,減少Balancer的帶寬。

    dfs.datanode.balance.max.concurrent.moves

    指定DataNode上同時用于Balancer待移動Block的最大線程個數。

如果E-MapReduce控制臺上沒有自定義配置選項,該如何處理?

  1. 登錄集群的Master節點。

  2. 進入配置模板的目錄。

    cd /var/lib/ecm-agent/cache/ecm/service/HUE/4.4.0.3.1/package/templates/

    hue templates

    本示例以HUE為例:

    • HUE表示服務的目錄。

    • 4.4.0.3.1為Hue的版本。

    • hue.ini為配置文件。

  3. 執行以下命令,添加您需要的配置。

    vim hue.ini

    當配置項已存在時,您可以根據時間情況修改參數值。

  4. 在E-MapReduce控制臺,重啟服務以生效配置。

使用數據開發提交的作業一直處于Submit狀態,該如何處理?

問題現象如下圖所示。Submit

出現此問題,通常是因為EMRFLOW中部分組件狀態錯誤,您需要在控制臺重啟狀態錯誤的組件。

  1. 進入EMRFLOW頁面。

    1. 進入任意服務頁面,修改訪問鏈接后的服務名為EMRFLOW。hdfs

      說明

      本示例是先進入HDFS服務頁面。

    2. 單擊部署拓撲頁簽。

  2. 啟動組件。

    1. 部署拓撲頁簽,單擊組件處于STOPPED狀態操作列的啟動Stopped

    2. 執行集群操作對話中,輸入執行原因,單擊確定

    3. 確認對話中,單擊確定

  3. 查看日志信息,檢查組件是否啟動。

    1. 單擊上方的查看操作歷史

    2. 操作歷史對話框中,單擊操作類型列的Start EMRFLOW FlowAgentDaemonStart Flow

    3. 單擊主機名列的emr-header-1emr-header

    4. 單擊任務名列的START_FlowAgentDaemon_ON_emr-header-1Start-FlowAgent

    5. 任務日志區域,提示如下圖所示時表示組件啟動成功。SUCCESS

      說明

      組件啟動后,如果還有報錯,請根據日志信息排查并處理。如果報錯信息提示權限問題,您可以先通過SSH方式登錄集群,執行命令sudo chown flowagent:hadoop /mnt/disk1/log/flow-agent/*處理,然后按照上述步驟重新操作以重啟狀態錯誤的組件。