MRS離線處理集群,可對海量數據進行分析和處理,形成結果數據,供下一步數據應用使用。
離線處理對處理時間要求不高,但是所處理數據量較大,占用計算存儲資源較多,通常通過Hive/SparkSQL引擎或者MapReduce/Spark2x實現。
本實踐基于天翼云翼MapReduce服務,用于指導您創建MRS集群后,使用Hive對原始數據進行導入、分析等操作,展示了如何構建彈性、低成本的離線大數據分析。
基本內容如下所示:
- 創建MRS離線查詢集群。
- 將本地數據導入到HDFS中。
- 創建Hive表。
- 將原始數據導入Hive并進行分析。
場景描述
Hive是建立在Hadoop上的數據倉庫框架,提供大數據平臺批處理計算能力,能夠對結構化/半結構化數據進行批量分析匯總完成數據計算。提供類似SQL的Hive Query Language語言操作結構化數據,其基本原理是將HQL語言自動轉換成MapReduce任務,從而完成對Hadoop集群中存儲的海量數據進行查詢和分析。
Hive主要特點如下:
- 海量結構化數據分析匯總。
- 將復雜的MapReduce編寫任務簡化為SQL語句。
- 靈活的數據存儲格式,支持JSON,CSV,TEXTFILE,RCFILE,SEQUENCEFILE,ORC(Optimized Row Columnar)這幾種存儲格式。
本實踐以某圖書網站后臺用戶的點評數據為原始數據,導入Hive表后通過SQL命令篩選出最受歡迎的暢銷圖書。
創建MRS離線查詢集群
- 登錄天翼云控制中心,選擇“大數據 > 翼MapReduce服務 MRS”,單擊“購買集群”,選擇“快速購買”,填寫軟件配置參數,單擊“下一步”。
軟件配置(以下參數僅供參考,可根據實際情況調整)
| 參數項 | 取值 |
|---|---|
| 計費模式 | 按需計費 |
| 集群名稱 | MRS_demo |
| 版本類型 | 普通版 |
| 集群版本 | MRS 3.1.0 |
| 組件選擇 | Hadoop分析集群 |
| 可用區 | 可用區1 |
| 虛擬私有云 | vpc-01 |
| 子網 | subnet-01 |
| 企業項目 | default |
| Kerberos認證 | 不開啟 |
| 用戶名 | admin/root |
| 密碼 | 設置密碼登錄集群管理頁面及ECS節點用戶的密碼,例如:Test!@12345。 說明? 此密碼僅為格式實例,實際設置密碼請注意規避弱密碼風險。 |
| 確認密碼 | 再次輸入設置用戶密碼 |
| 通信安全授權 | 勾選“確認授權” |
- 購買Hadoop分析集群。

- 單擊“立即購買”,等待MRS集群創建成功。
集群購買成功


將本地數據導入到HDFS中
- 在本地已獲取某圖書網站后臺圖書點評記錄的原始數據文件“book_score.txt”,例如內容如下。
字段信息依次為:用戶ID、圖書ID、圖書評分、備注信息
例如部分數據節選如下:
202001,242,3,Good!
202002,302,3,Test.
202003,377,1,Bad!
220204,51,2,Bad!
202005,346,1,aaa
202006,474,4,None
202007,265,2,Bad!
202008,465,5,Good!
202009,451,3,Bad!
202010,86,3,Bad!
202011,257,2,Bad!
202012,465,4,Good!
202013,465,4,Good!
202014,465,4,Good!
202015,302,5,Good!
202016,302,3,Good!
...
- 登錄對象存儲服務OBS控制臺,單擊“創建桶”,填寫以下參數,單擊“立即創建”。
桶參數
| 參數項 | 取值 |
|---|---|
| 數據冗余存儲策略 | 單AZ存儲 |
| 桶名稱 | mrs-hive |
| 默認存儲類別 | 標準存儲 |
| 桶策略 | 私有 |
| 默認加密 | 關閉 |
| 歸檔數據直讀 | 關閉 |
| 企業項目 | default |
| 標簽 | - |
- 創建OBS桶。

- 等待桶創建好,單擊桶名稱,選擇“對象 > 上傳對象”,將數據文件上傳至OBS桶內。
- 上傳對象。

- 切換回MRS控制臺,單擊創建好的MRS集群名稱,進入“概覽”,單擊“IAM用戶同步”所在行的“同步”,等待約5分鐘同步完成。
同步IAM用戶


- 將數據文件上傳HDFS。
a.在“文件管理”頁簽,選擇“HDFS文件列表 ” ,進入數據存儲目錄,如“/tmp/test”。
“/tmp/test”目錄僅為示例,可以是界面上的任何目錄,也可以通過“新建”創建新的文件夾。
b.單擊“導入數據”。
- OBS路徑:選擇上面創建好的OBS桶名,找到“book_score.txt”文件,勾選“我確認所選腳本安全,了解可能存在的風險,并接受對集群可能造成的異常或影響。”,單擊“確定”。
- HDFS路徑:選擇“/tmp/test”,單擊“確定”。
從OBS導入數據到HDFS


c.單擊“確定”,等待數據導入成功,此時數據文件已上傳至MRS集群的HDFS文件系統內。
數據導入成功


創建Hive表
- 下載并安裝集群全量客戶端,例如在主Master節點上安裝,客戶端安裝目錄為“/opt/client”,相關操作可參考用戶操作指南安裝客戶端。
也可直接使用Master節點中自帶的集群客戶端,安裝目錄為“/opt/Bigdata/client”。
- 為主Master節點綁定一個彈性IP并在安全組中放通22端口,然后使用root用戶登錄主Master節點,進入客戶端所在目錄并加載變量。
cd /opt/client
source bigdata_env
- 執行 beeline -n 'hdfs' 命令進入Hive Beeline命令行界面。
執行以下命令創建一個與原始數據字段匹配的Hive表:
create table bookscore (userid int,bookid int,score int,remarks string) row format delimited fields terminated by ','stored as textfile;
- 查看表是否創建成功:
show tables;
+------------+
|
tab_name |
+------------+
| bookscore |
+------------+
將原始數據導入Hive并進行分析
- 繼續在Hive Beeline命令行中執行以下命令,將已導入HDFS的原始數據導入Hive表中。
load data inpath '/tmp/test/book_score.txt' into table bookscore;
- 數據導入完成后,執行如下命令,查看Hive表內容。
select from bookscore;
+-------------------+-------------------+------------------+--------------------+
| bookscore.userid | bookscore.bookid | bookscore.score | bookscore.remarks |
+-------------------+-------------------+------------------+--------------------+
| 202001
| 242 | 3 | Good! |
| 202002 | 302 | 3 | Test. |
| 202003 | 377 | 1 | Bad! |
| 220204 | 51 | 2 | Bad! |
| 202005 | 346 | 1 | aaa |
| 202006 | 474 | 4 | None |
| 202007 | 265 | 2 | Bad! |
| 202008 | 465 | 5 | Good! |
| 202009 | 451 | 3 | Bad! |
| 202010 | 86 | 3 | Bad! |
| 202011 | 257 | 2 | Bad! |
| 202012 | 465 | 4 | Good! |
| 202013 | 465 | 4 | Good! |
| 202014 | 465 | 4 | Good! |
| 202015 | 302 | 5 | Good! |
| 202016 | 302 | 3 | Good! |
...
執行以下命令統計表行數:
select count(*) from bookscore;
+------+
| _c0
|
+------+
| 32
|
+------+
- 執行以下命令,等待MapReduce任務完成后,篩選原始數據中累計評分最高的圖書top3。
select bookid,sum(score) as summarize from bookscore group by bookid order by summarize desc limit 3;
例如最終顯示內容如下:
...
INFO : 2021-10-14 19:53:42,427 Stage-2 map = 0%, reduce = 0%
INFO : 2021-10-14 19:53:49,572 Stage-2 map = 100%, reduce = 0%, Cumulative CPU 2.15 sec
INFO : 2021-10-14 19:53:56,713 Stage-2 map = 100%, reduce = 100%, Cumulative CPU 4.19 sec
INFO : MapReduce Total cumulative CPU time: 4 seconds 190 msec
INFO : Ended Job = job_1634197207682_0025
INFO : MapReduce Jobs Launched:
INFO : Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 4.24 sec HDFS Read: 7872 HDFS Write: 322 SUCCESS
INFO : Stage-Stage-2: Map: 1 Reduce: 1 Cumulative CPU: 4.19 sec HDFS Read: 5965 HDFS Write: 143 SUCCESS
INFO : Total MapReduce CPU Time Spent: 8 seconds 430 msec
INFO : Completed executing command(queryId=omm_20211014195310_cf669633-5b58-4bd5-9837-73286ea83409); Time taken: 47.388 seconds
INFO : OK
INFO : Concurrency mode is disabled, not creating a lock manager
+---------+------------+
| bookid | summarize |
+---------+------------+
| 465 | 170 |
| 302 | 110 |
| 474 | 88 |
+---------+------------+
3 rows selected (47.469 seconds)
以上內容表示,ID為465、302、474的3本書籍,為累計評分最高的Top3圖書。