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图书。