MRS离线处理集群,可对海量数据进行分析和处理,形成结果数据,供下一步数据应 用使用。
离线处理对处理时间要求不高,但是所处理数据量较大,占用计算存储资源较多,通 常通过Hive/SparkSQL引擎或者MapReduce/Spark2x实现。
本实践基于华为云MapReduce服务,用于指导您创建MRS集群后,使用Hive对原始数 据进行导入、分析等操作,展示了如何构建弹性、低成本的离线大数据分析。
基本内容如下所示:
1. 创建MRS离线查询集群。
2. 将本地数据导入到HDFS中。
3. 创建Hive表。
4. 将原始数据导入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 离线查询集群
1. 登录华为云控制台,选择“大数据 > MapReduce服务”,单击“购买集群”,选 择“快速购买”,填写软件配置参数,单击“下一步”。
表1-5 软件配置(以下参数仅供参考,可根据实际情况调整)
参数项 取值
区域 华北-北京四
计费模式 按需计费
集群名称 MRS_demo
集群版本 MRS 3.1.0
组件选择 Hadoop分析集群
可用区 可用区1
虚拟私有云 vpc-01
子网 subnet-01
企业项目 default
Kerberos认证 不开启
用户名 root/admin
密码 设置密码登录集群管理页面及ECS节点
用户的密码,例如:Test!@12345。
确认密码 再次输入设置用户密码
通信安全授权 勾选“确认授权”
2. 单击“立即购买”,等待约15分钟,MRS集群创建成功。
将本地数据导入到 HDFS 中
1. 在本地已获取某图书网站后台图书点评记录的原始数据文件“book_score.txt”,
例如内容如下。
桶名称 mrs-hive
默认存储类别 标准存储
桶策略 私有
默认加密 关闭
归档数据直读 关闭
企业项目 default
标签
-等待桶创建好,单击桶名称,选择“对象 > 上传对象”,将数据文件上传至OBS 桶内。
3. 切换回MRS控制台,单击创建好的MRS集群名称,进入“概览”,单击“IAM用 户同步”所在行的“同步”,等待约5分钟同步完成。
4. 将数据文件上传HDFS。
a. 在“文件管理”页签,选择“HDFS文件列表”,进入数据存储目录,如
“/tmp/test”。
“/tmp/test”目录仅为示例,可以是界面上的任何目录,也可以通过“新 建”创建新的文件夹。
b. 单击“导入数据”。
▪
OBS路径:选择上面创建好的OBS桶名,找到“book_score.txt”文件,单击“是”。
▪
HDFS路径:选择“/tmp/test”,单击“是”。c. 单击“确定”,等待数据导入成功,此时数据文件已上传至MRS集群的HDFS 文件系统内。
创建 Hive 表
1. 下载并安装集群全量客户端,例如在主Master节点上安装,客户端安装目录为
“/opt/client”,相关操作可参考安装客户端。
也可直接使用Master节点中自带的集群客户端,安装目录为“/opt/Bigdata/
client”。
2. 为主Master节点绑定一个弹性IP并在安全组中放通22端口,然后使用root用户登
cd /opt/client source bigdata_env
3. 执行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;
4. 查看表是否创建成功:
show tables;
+---+
1. 继续在Hive Beeline命令行中执行以下命令,将已导入HDFS的原始数据导入Hive 表中。
load data inpath '/tmp/test/book_score.txt' into table bookscore;
2. 数据导入完成后,执行如下命令,查看Hive表内容。
select * from bookscore;
+---+---+---+---+
| bookscore.userid | bookscore.bookid | bookscore.score | bookscore.remarks | +---+---+---+---+
select count(*) from bookscore;
+---+
| _c0 | +---+
| 32 | +---+
3. 执行以下命令,等待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 +---+---+
3 rows selected (47.469 seconds)
以上内容表示,ID为456、302、474的3本书籍,为累计评分最高的Top3图书。