閱讀580 返回首頁    go 阿裏雲


本地運行__功能介紹_MapReduce_大數據計算服務-阿裏雲

用戶通過在jar命令中設置–local參數,在本地模擬MapReduce的運行過程,從而進行本地調試。本地運行時, 客戶端會從ODPS中下載本地調試所需要的輸入表的元信息、數據,所需要的資源以及輸出表的元信息,並將這些信息保存到一個名為warehouse的本地目錄中。 在程序運行結束後,會將計算結果輸出到warehouse目錄內的一個文件中。如果本地的warehouse目錄下已經下載了輸入表及被引用的資源,在下一次運行時, 會直接引用warehouse下的數據及文件,而不會重複下載。

在本地運行過程中,仍然會啟動多個Map及Reduce進程處理數據,但這些進程不是並發運行,而是依次串行運行。此外這個模擬運行過程與真正的分布式運行有如下差別:

  • 輸入表行數限製:目前,最多隻會下載100行數據;
  • 資源的使用:在分布式環境中,ODPS會限製引用資源的大小,詳情請參考 應用限製 。但在本地運行環境中,不會有資源大小的限製;
  • 安全限製:ODPS MapReduce及UDF程序在分布式環境中運行時受到 Java沙箱 的限製。但在本地運行時,則沒有此限製;

下麵將給出一個簡單的本地本地運行示例:

    odps:my_project> jar -l com.aliyun.odps.mapred.example.WordCount wc_in wc_out
    Summary:
    counters: 10
        map-reduce framework
                combine_input_groups=2
                combine_output_records=2
                map_input_bytes=4
                map_input_records=1
                map_output_records=2
                map_output_[wc_out]_bytes=0
                map_output_[wc_out]_records=0
                reduce_input_groups=2
                reduce_output_[wc_out]_bytes=8
                reduce_output_[wc_out]_records=2

    OK

備注:

如果用戶是第一次運行本地調試命令,命令成功結束後,會在當前路徑下看到一個名為warehouse的路徑。warehouse的目錄結構如下所示:

<warehouse>
   |____my_project(項目空間目錄)
          |____ <__tables__>
          |       |__wc_in(表數據目錄)
          |       |      |____ data(文件)
          |       |      |
          |       |      |____ <__schema__> (文件)
          |       |__wc_out(表數據目錄)
          |               |____ data(文件)
          |               |
          |               |____ <__schema__> (文件)
          |
          |____ <__resources__>
                  |
                  |___table_resource_name (表資源)
                  |         |____<__ref__>
                  |
                  |___ file_resource_name(文件資源)

my_project的同級目錄表示項目空間。wc_in及wc_out表示數據表,用戶在jar命令中讀寫的表文件數據會被下載到這級目錄下。 schema文件中的內容表示表的元信息,其文件格式定義為:

project=local_project_name
table=local_table_name
columns=col1_name:col1_type,col2_name:col2_type
partitions=p1:STRING,p2:BIGINT    -- 本示例中不需要此字

其中,列名與列類型使用冒號”:”分隔,列與列之間使用逗號”,”分隔。schema文件的最前麵需要聲明Project名字及Table名字, 即project_name.table_name,使用逗號與列的定義做分隔。data文件表示表的數據。列的數量及數據必須與schema文件的定義相符, 不能多列或者少列,列之間使用逗號分隔。

wc_in的schema文件內容:

my_project.wc_in,key:STRING,value:STRING

data文件內容示例:

0,2

客戶端會從ODPS中下載表的元信息及部分數據內容並保存到上述兩個文件中。如果再次運行這個示例,將直接使用wc_in目錄下的數據, 不會再次下載。需要特殊聲明的是,從ODPS中下載數據的功能隻在MapReduce的本地運行模式下才支持,在 Eclipse開發插件 中進行本地調試時, 不支持將ODPS的數據下載到本地。

wc_out的schema文件內容:

my_project.wc_out,key:STRING,cnt:BIGINT

data文件內容:

0,1
2,1

客戶端會從ODPS現在wc_out表的元信息,並保存到schema文件中。而data文件的內容是在本地運行後,生成的結果數據文件。

Note:

  • 用戶也可以自行編輯schema及data文件,而後將這兩個文件放置在對應的表目錄下。在本地運行時,客戶端檢測到表目錄已經存在, 則不會從ODPS中下載這個表的信息。本地的表目錄可以是ODPS中不存在的表。

最後更新:2016-05-06 10:43:14

  上一篇:go 資源使用__功能介紹_MapReduce_大數據計算服務-阿裏雲
  下一篇:go Java沙箱__MapReduce_大數據計算服務-阿裏雲