Hadoop2.6.0配置參數查看小工具

来源:http://www.cnblogs.com/jiaan-geng/archive/2016/07/27/5462144.html
-Advertisement-
Play Games

使用Hadoop進行離線分析或者數據挖掘的工程師,經常會需要對Hadoop集群或者mapreduce作業進行性能調優。性能調優的前提是需要能準確知道目前針對Hadoop集群或者mapreduce作業配置的參數。本文將針對這一需求,基於Hadoop開發一個簡單實用的工具查詢查看各種參數。 ...


前言

使用Hadoop進行離線分析或者數據挖掘的工程師,經常會需要對Hadoop集群或者mapreduce作業進行性能調優。也許你知道通過瀏覽器訪問http://master:18088/conf來查看配置信息,如下圖所示:

 

但是當Linux工程師們只面對命令行時,如何查看呢?而且如果運維工程師根據集群狀況及運行歷史使用shell、Python、ruby等腳本寫些運維代碼,甚至動態調整集群參數時,該怎麼辦呢?性能調優的前提是需要能準確知道目前針對Hadoop集群或者mapreduce作業配置的參數。在MySQL中可以通過以下命令查詢參數值:

 

SHOW VARIABLES LIKE 'some_parameter'

也可以使用以下命令查詢參數值:

 

 

SELECT @@session.some_parameter
SELECT @@global.some_parameter

或者直接查詢information_schema.GLOBAL_VARIABLES得到參數值。

可惜的是Hadoop沒有提供類似的方式,這對於在Linux系統下查看參數進而修改參數增加了成本和負擔。儘管我們可以

本文將針對這一需求,基於Hadoop開發一個簡單實用的工具查詢查看各種參數。

準備工作

首先在Hadoop集群的Master節點的個人目錄下創建workspace目錄用於存儲開發的Hadoop應用代碼,命令如下:

mkdir workspace

進入workspace目錄,開始編輯HadoopConfDisplay.java代碼:

 


為便於大家使用,我把代碼都列出來,這其實也是借鑒了網上別人的一些內容:

 

import java.util.Map.Entry;

import org.apache.hadoop.conf.*;
import org.apache.hadoop.util.*;

public class HadoopConfDisplay extends Configured implements Tool {

  static {
    Configuration.addDefaultResource("core-site.xml");
    Configuration.addDefaultResource("hdfs-site.xml");
    Configuration.addDefaultResource("mapred-site.xml");
    Configuration.addDefaultResource("yarn-site.xml");
  }

  @Override
  public int run(String[] args) throws Exception {
    Configuration conf = getConf();
    for (Entry<String, String> entry: conf) {
      System.out.printf("%s=%s\n", entry.getKey(), entry.getValue());
    }
    return 0;
  }

  public static void main(String[] args) throws Exception {
    int exitCode = ToolRunner.run(new HadoopConfDisplay(), args);
    System.exit(exitCode);
  }
}


在Hadoop的根目錄下創建myclass,此目錄用於存儲個人開發的Hadoop應用代碼編譯後的class或者jar包。我本地的目錄為/home/jiaan.gja/install/hadoop-2.6.0/myclass/

 

由於HadoopConfDisplay中使用了hadoop-common-2.6.0.jar中的類,所以編譯HadoopConfDisplay.java時需要指定classpath。同時將編譯後的class輸出到/home/jiaan.gja/install/hadoop-2.6.0/myclass/目錄下。執行命令如下:

進入myclass目錄,將編譯好的HadoopConfDisplay的class打到jar包里:

 

jar cvf mytest.jar *

執行過程如下:

 

成果驗證

經過以上準備,最終我們生成了mytest.jar包文件,現在到了驗證輸出Hadoop配置參數的時候。輸入以下命令:

 

hadoop jar mytest.jar HadoopConfDisplay

輸出結果如下圖:

 

由於參數的確很多,這裡只展示了其中的一部分信息。這裡顯示的信息雖然很多,可是會發現很多參數並沒有包括進來,比如:

mapreduce.job.ubertask.enable

mapreduce.job.ubertask.maxreduces

mapreduce.job.ubertask.maxmaps

完善

    還記得本文剛開始說的通過web界面查看Hadoop集群參數的內容嗎?我在我個人搭建的集群(有關集群的搭建可以參照《Linux下Hadoop2.6.0集群環境的搭建》)上訪問http://master:18088/conf頁面時,可以找到以上缺失的參數如下所示:

 

<configuration>
  <property>
    <name>mapreduce.job.ubertask.enable</name>
    <value>false</value>
    <source>mapred-default.xml</source>
  </property>
  <!-- 省略其它參數屬性 -->
  <property>
    <name>mapreduce.job.ubertask.maxreduces</name>
    <value>1</value>
    <source>mapred-default.xml</source>
  </property>
  <!-- 省略其它參數屬性 -->
  <property>
    <name>mapreduce.job.ubertask.maxmaps</name>
    <value>9</value>
    <source>mapred-default.xml</source>
  </property>
  <!-- 省略其它參數屬性 -->
</configuration>

從以上內容我們可以看見缺失的參數都配置在mapred-default.xml中,而我之前編寫的HadoopConfDisplay類的代碼中並未包含此配置。此外,未包括進來的配置文件還有yarn-default.xml、core-default.xml(說明Hadoop參數預設是從*-default.xml的幾個文件中讀取的)。最後我們將這些內容也編輯進去,代碼如下:

 

 

import java.util.Map.Entry;

import org.apache.hadoop.conf.*;
import org.apache.hadoop.util.*;

public class HadoopConfDisplay extends Configured implements Tool {

  static {
    Configuration.addDefaultResource("core-default.xml");
    Configuration.addDefaultResource("yarn-default.xml");
    Configuration.addDefaultResource("mapred-default.xml");
    Configuration.addDefaultResource("core-site.xml");
    Configuration.addDefaultResource("hdfs-site.xml");
    Configuration.addDefaultResource("mapred-site.xml");
    Configuration.addDefaultResource("yarn-site.xml");
  }

  @Override
  public int run(String[] args) throws Exception {
    Configuration conf = getConf();
    for (Entry<String, String> entry: conf) {
      System.out.printf("%s=%s\n", entry.getKey(), entry.getValue());
    }
    return 0;
  }

  public static void main(String[] args) throws Exception {
    int exitCode = ToolRunner.run(new HadoopConfDisplay(), args);
    System.exit(exitCode);
  }
}


最後我們按照之前的方式編譯打包為mytest.jar,再執行命令驗證的結果如下圖所示:

 

之前缺失的參數都出來了,呵呵!

這下大家可以愉快的進行性能調優了。

 

 

後記:個人總結整理的《深入理解Spark:核心思想與源碼分析》一書現在已經正式出版上市,目前京東、噹噹、天貓等網站均有銷售,歡迎感興趣的同學購買。

 

京東:http://item.jd.com/11846120.html 

噹噹:http://product.dangdang.com/23838168.html 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我怎麼一步一步追到ODBO了? mondrian核心api—>olap4j—>jedox也在用olap4j—>ODBO? ODBO是什麼呢? OLE DB for OLAP (Object Linking and Embedding Database for Online Analytical Pr... ...
  • Laxcus是Laxcus大數據實驗室歷時五年,全體系自主設計研發的國內首套大數據管理系統。能夠支撐百萬台級電腦節點,提供EB量級存儲和計算能力,相容SQL和關係資料庫。最新的2.x版本已經完整覆蓋和集成大數據主流技術和功能,並投入到國內多個超算項目中使用。部署laxcus集群很簡單,一個普通用戶... ...
  • 今天,我和大家分享下redis在運維數據分析中的去重統計方式。 為了避免混淆,本文中對於redis的數據結構做如下約定: SET:saddkey member ZSET:zaddkeyscoremember HYPERLOGLOG:pfaddkeyelement STRING:setbitkeyof ...
  • 一. 什麼是跟蹤標記 SQL Server 跟蹤標記(Trace Flag),像是一個開關,可用來自定義SQL Server的某種行為或特性,在性能診斷,系統調試等方面較為常用。比如:開啟1204或1222跟蹤標記,可在errorlog里記錄死鎖信息的明細。 跟蹤標記有會話級和實例級兩種。 二. 如 ...
  • 版權聲明:筆記整理者亡命小卒熱愛自由,崇尚分享。但是本筆記源自www.jtthink.com(程式員在囧途)沈逸老師的《web級mysql顛覆實戰課程 》。如需轉載請尊重老師勞動,保留沈逸老師署名以及課程來源地址。 一、MYSQL安裝設置簡述。 1、本課程基於MYSQL 5.7.9教學。 2、課程使 ...
  • ORACLE 11g 導出 表的時候 不會導出空表 導出空表操作步驟 :(使用PLSQL) 1、打開SQL window 執行下麵的 SQL Select 'alter table '||table_name||' allocate extent;' from user_tables where s ...
  • 引用自:http://www.cnblogs.com/CareySon/archive/2012/03/07/2383690.html 感謝CareySon的分享,我把使用到的SQL腳本貼上來。 --創建源表 CREATE TABLE SourceTable(ID INT,[DESC] VARCHA ...
  • 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三個配置文件,預設下來,這些配置文件都是空的,所以很難知道這些配置文件有哪些配置可以生效,上網找的配置可能因為各個hadoop版本不同,導致無法生效。瀏覽更多的配置,有兩個方法: 1.選 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...