全部產品
Search
文件中心

E-MapReduce:Jindo sql命令介紹

更新時間:Jul 01, 2024

Jindo sql命令是JindoFS內建的工具,方便您分析JindoFS訪問日誌、中繼資料和OSS訪問日誌。本文為您介紹如何使用Jindo sql命令,分析JindoFS訪問日誌、中繼資料和OSS訪問日誌的資料。

前提條件

  • 本地安裝了Java JDK 8。
  • 已建立叢集,詳情請參見建立叢集

背景資訊

使用限制

EMR-3.36.0及後續版本或EMR-5.2.0及後續版本的叢集,支援使用Jindo sql命令。

使用Jindo sql命令

  1. 通過SSH方式登入叢集,詳情請參見登入叢集
  2. 執行以下命令,啟動jindo sql。
    jindo sql
    jindo sql支援以下常用參數。
    參數描述
    -f指定啟動並執行SQL檔案。
    -i啟動Jindo sql後自動運行初始化SQL指令碼。
    -d參數設定為索引值對的形式。例如,-d A=B

Jindo sql內建表結構

  • audit_log_source(分區表)
    audit_log_source表用作JindoFS訪問日誌原始表。
    參數描述
    datetime時間格式yyyy-MM-dd HH:mm:ss。
    allowed本次操作是否被允許,取值如下:
    • true:允許本次操作。
    • false:不允許本次操作。
    ugi操作使用者(包含認證方式資訊)。
    ipClient IP地址。
    nsBlock模式namespace的名稱。
    cmd操作命令。
    src源路徑。
    dst目標路徑,可以為空白。
    perm操作檔案的Permission資訊。
    date(分區列)日誌日期,格式為YYYY-mm-DD。
  • audit_log
    audit_log允許使用分區列進行分區過濾,用作JindoFS訪問日誌表。
    參數描述
    datetime時間格式yyyy-MM-dd HH:mm:ss。
    allowed本次操作是否被允許,取值如下:
    • true:允許本次操作。
    • false:不允許本次操作。
    ugi操作使用者(包含認證方式資訊)。
    ipClient IP地址。
    nsBlock模式namespace的名稱。
    cmd操作命令。
    src源路徑。
    dst目標路徑,可以為空白。
    perm操作檔案的Permission資訊。
    date(分區列)日誌日期,格式為YYYY-mm-DD。
  • fs_image(分區表)
    fs_image用作轉存image資訊
    參數描述
    atimeINode最近訪問時間。
    attr檔案相關屬性。
    etagOSS的ETag值。
    idINode的ID。
    mtimeINode的修改時間。
    nameINode的名稱。
    ownerowner名稱。
    ownerGroupowner組名稱。
    parentId父節點的ID。
    permission操作檔案的Permission資訊。
    sizeINode的大小。
    stateINode的狀態。
    typeINode的類型。
    storagePolicy儲存策略。
    namespace(分區列)namespace名稱。
    datetime(分區列)轉存時間。
  • oss_access_log_source
    如果開啟分區表模式,則為分區表。oss_access_log_source表用作OSS訪問日誌原始表。
    參數描述
    line原始日誌。
    bucket(分區列)Bucket名稱。
    partition_date(分區列)日誌日期格式為YYYY-mm-DD。
  • oss_access_log
    如果開啟分區表模式,允許使用分區列進行分區過濾。oss_access_log表用作OSS訪問日誌。
    參數描述
    Remote_IP要求者的IP地址。
    Reserved保留欄位,固定值為-。
    Reserved1保留欄位,固定值為-。
    TimeOSS收到請求的時間。
    Request_URI包含query string的請求URL。OSS會忽略以x-開頭的query string參數,但這個參數會被記錄在訪問日誌中。所以您可以使用x-開頭query string參數標記一個請求,然後使用這個標記快速尋找該請求對應的日誌。
    HTTP_StatusOSS返回的HTTP狀態代碼。
    SentBytes請求產生的下行流量。單位:Byte。
    RequestTime完成本次請求耗費的時間。單位:ms。
    Referer請求的HTTP Referer。
    User_AgentHTTP的User-Agent頭。
    HostName請求訪問的目標網域名稱。
    Request_ID請求的Request ID。
    LoggingFlag是否已開啟日誌轉存。
    Requester要求者的使用者ID。取值-表示匿名訪問。
    Operation請求類型。
    Bucket請求的目標Bucket名稱。
    Key請求的目標Object名稱。
    ObjectSize目標Object大小。單位:Byte。
    Server_Cost_TimeOSS處理本次請求所花的時間。單位:毫秒。
    ErrorCodeOSS返回的錯誤碼。取值-表示未返回錯誤碼。
    RequestLength請求的長度。單位:Byte。
    UserIDBucket擁有者ID。
    Delta_DataSizeBucket大小的變化量。取值-表示此次請求不涉及Object的寫入操作。
    SyncRequest請求是否為CDN回源請求。取值如下:
    • cdn:請求是CDN回源請求。
    • -:請求不是CDN回源請求。
    StorageClass目標Object的儲存類型。取值如下:
    • Standard:標準儲存。
    • IA:低頻訪問儲存。
    • Archive:Archive Storage。
    • Cold Archive:冷Archive Storage。
    • -:未擷取Object儲存類型。
    TargetStorageClass 是否通過生命週期規則或CopyObject轉換了Object的儲存類型。取值如下:
    • Standard:轉換為標準儲存。
    • IA:轉換為低頻訪問儲存。
    • Archive:轉換為Archive Storage。
    • Cold Archive:轉換為冷Archive Storage
    • -:請求不涉及Object儲存類型轉換操作。
    TransmissionAccelerationAccessPoint通過傳輸加速網域名稱訪問目標Bucket時使用的傳輸加速存取點。取值-表示未使用傳輸加速網域名稱或傳輸加速存取點與目標Bucket所在地區相同。

    例如,要求者通過華東1(杭州)的存取點訪問目標Bucket時,值為cn-hangzhou。

    AccessKeyID訪問的AccessKey ID。
    bucket(分區列)Bucket名稱。
    partition_date(分區列)日誌日期格式為YYYY-mm-DD。

使用Jindo sql分析JindoFS訪問日誌

JindoFS為儲存在OSS上的JindoFS訪問記錄檔提供SQL的分析功能,通過SQL分析相關表,提供Top-N活躍操作命令分析和Top-N活躍IP分析。您可以通過jindo sql命令,使用該功能。
說明 已開啟AuditLog功能,詳情請參見AuditLog使用說明
Jindo SQL相關命令樣本如下:
  • 執行如下命令,顯示錶。
    show tables;
    說明 表結構資訊,請參見Jindo sql內建表結構
    返回資訊如下圖所示。show_table
  • 執行如下命令,顯示分區。
    show partitions audit_log_source;
    返回資訊類似如下圖所示。show_audit_log_source
  • 執行如下命令,查詢資料。
    • select * from audit_log_source limit 10;
      返回資訊類似如下圖所示。audit_log_source
    • select * from audit_log limit 10;
      返回資訊類似如下。audit_log
  • 執行如下命令,統計2020-10-20日不同命令的使用頻次。rate

使用Jindo sql分析中繼資料

JindoFS為JindoFS上的中繼資料檔案提供SQL的分析功能,通過SQL分析相關表。您可以通過jindo sql命令,使用該功能。
說明 已開啟AuditLog功能,詳情請參見AuditLog使用說明
  1. 通過SSH方式登入叢集,詳情請參見登入叢集
  2. 執行以下命令,啟動Jindo sql。
    jindo sql
  3. 查詢Jindo SQL可以分析的表格。
    • 使用show tables命令,可以查看支援查詢分析的表格。Jindo Sql內建了審計和中繼資料資訊的分析功能,對應audit_log和fs_image。
      程式碼範例如下圖所示。show-tables
    • 使用show partitions fs_image命令,可以查看錶的fs_image分區資訊。每一個分區對應於一次上傳jindo jfs -dumpMetadata產生的資料。
      程式碼範例如下圖所示。show-partition
  4. 查詢分析中繼資料資訊。
    Jindo SQL使用Spark-SQL文法。您可以使用SQL進行分析和查詢fs_image表。
    程式碼範例如下圖所示。fs_image
    例如:根據某次轉存的中繼資料資訊統計該namespace下的目錄個數。dump
    說明 namespace和datetime為Jindo Sql增加的兩列,分別對應於namespace名稱和上傳中繼資料的時間戳記。

使用Jindo sql分析OSS訪問日誌

重要 分析OSS訪問日誌需要指定OSS訪問日誌目錄和指定是否為分區表,指定分區表會自動按照Bucket或date進行日誌歸檔,能夠支援使用過濾語句指定查詢某個分區,極大的提升了查詢效率,但是開啟分區表之後必須每次使用分區表模式,否則檔案會被歸檔到目錄導致部分資料無法查詢。
JindoFS為儲存在OSS上的OSS訪問記錄檔提供SQL的分析功能,通過SQL分析相關表。您可以通過jindo sql命令,使用該功能。
說明 已開啟日誌轉存,詳情請參見日誌轉存
  1. 通過SSH方式登入叢集,詳情請參見登入叢集
  2. 執行以下命令,啟動Jindo sql。
    jindo sql
  3. 執行以下命令,指定日誌儲存路徑和表類型。
    jindo sql -d access_log_path=oss://test-sh/oss-accesslog -d partition.table.enabled=true

    代碼中的access_log_path為OSS訪問日誌儲存路徑,partition.table.enabled指定是否為分區表,true表示為分區表。

常見問題

  • Q:如何修改初始資源Jindo sql的啟動參數?
    A:因為Jindo sql基於Spark的程式,所以初始資源可能較小,您可以通過環境變數JINDO_SPARK_OPTS來修改初始資源Jindo sql的啟動參數,修改樣本如下。
    export JINDO_SPARK_OPTS="--conf spark.driver.memory=4G --conf spark.executor.instances=20 --conf spark.executor.cores=5 --conf spark.executor.memory=20G"
  • Q:如何使用Hive分析表?

    A:為了避免汙染Hive中繼資料,預設Hive看不到Default下的幾個表,如果想使用Hive分析這些表,可以通過語句show create table {table_name}查看錶語句或者使用SQL建立新表,Hive需要執行載入外部表格。