背景知识
E-MapReduce(简称“EMR”)是云原生开源大数据平台,向客户提供简单易集成的Hadoop、Hive、Spark、Flink、Presto、Clickhouse、Delta、Hudi等开源大数据计算和存储引擎。EMR计算资源可以根据业务的需要调整。EMR可以部署在阿里云公有云的ECS和ACK、专有云平台。产品文档地址:https://www.aliyun.com/product/emapreduce
产品优势
开源生态:提供高性能、稳定版本Hadoop、Spark、Hive、Flink、Kafka、HBase、Presto、Impala、Hudi等开源大数据组件,客户可根据场景灵活搭配使用
引擎优化:多引擎性能优化,如Spark SQL较开源版本提升6倍。采用JindoFS+OSS,保证数据可靠性基础上,性能大幅提升
便捷运维:在阿里云控制台和OpenAPI方便地对集群、节点和服务进行监控和运维操作。助您大幅提升运维工作效率,让数据工程师更专注于业务开发
节约成本:集群资源可自动按需匹配,您只需要按实际使用量付费,减少资源浪费成本。支持阿里云抢占式实例、预留实例券(RI),进一步降低成本
弹性资源:可以灵活调整集群资源,在数分钟内创建出基于云服务器 ECS、容器 ACK的集群,快速响应业务需求
安全可靠:通过 VPC 和安全组设置集群网络安全策略,支持Kerberos身份认证和数据加密,使用Ranger数据访问控制。支持数据加密,保证数据安全
对比维度 | EMR | 自建Hadoop |
成本 | 资源按量付费,支持集群资源灵活调整,数据分层存储,资源使用率高。无额外软件License费用。 | 提前预估资源,且资源相对固定,资源使用率低。采用Hadoop发行版,需额外支付License费用。 |
性能 | 较开源版本性能大幅提升,如EMR SparkSQL性能是开源版本6倍。 | 采用开源社区版本,性能需自行优化。 |
易用 | 分钟级别启动Hadoop集群,敏捷响应业务需求。 | 采购服务器,部署Hadoop生态组件,周期长达数周。 |
弹性 | 可根据作业临时启动和销毁集群。集群资源可根据时间周期或集群负载动态自动调整。基于JindoFS计算存储分离架构,轻松分别扩展计算和存储资源。 | 计算和存储耦合,资源相对固定,无法弹性调整资源。 |
安全 | 支持企业级多租户资源管理能力,支持对表、列、行级别的权限控制和日志审计,支持数据加密。 | 多租户管理能力需自行配置,能力不完善,无法满足企业级需求。 |
可靠 | 大规模、企业级环境的检验,随开源版本升级,并经过专业的兼容性验证测试,提供优于社区版本的使用体验。 | 需自行更新和升级开源版本,验证各组件版本兼容性,自行修复社区bug。 |
服务 | 专业和资深大数据专家技术服务团队提供售后支持。 | 社区版本无服务支持,Hadoop发行版,需额外支付License和服务费用。 |
上传数据到HDFS:
本步骤将指导您如何将自建数据上传到HDFS。
1. 执行如下命令,创建HDFS目录。
说明:在LX终端中,粘贴快捷键为SHIFT+CTRL+V。
hdfs dfs -mkdir -p /data/student
2. 上传文件到hadoop文件系统。
a.执行如下命令,创建u.txt文件。
#创建u.txt文件 vim u.txt
b.按 "i" 键进入编辑模式,通过粘贴快捷键(SHIFT+CTRL+V)将下方内容复制到文件中,按"Esc"返回命令模式,输入":wq"保存
说明:第一列表示userid,第二列表示movieid,第三列表示rating,第四列表示unixtime。
196 242 3 881250949 186 302 3 891717742 22 377 1 878887116 244 51 2 880606923 166 346 1 886397596 298 474 4 884182806 115 265 2 881171488 253 465 5 891628467 305 451 3 886324817 6 86 3 883603013 62 257 2 879372434 286 1014 5 879781125 200 222 5 876042340 210 40 3 891035994 224 29 3 888104457 303 785 3 879485318 122 387 5 879270459 194 274 2 879539794 291 1042 4 874834944 234 1184 2 892079237 119 392 4 886176814 167 486 4 892738452 299 144 4 877881320 291 118 2 874833878 308 1 4 887736532 95 546 2 879196566 38 95 5 892430094 102 768 2 883748450 63 277 4 875747401 160 234 5 876861185 50 246 3 877052329 301 98 4 882075827 225 193 4 879539727 290 88 4 880731963 97 194 3 884238860 157 274 4 886890835 181 1081 1 878962623 278 603 5 891295330 276 796 1 874791932 7 32 4 891350932 10 16 4 877888877 284 304 4 885329322 201 979 2 884114233 276 564 3 874791805 287 327 5 875333916 246 201 5 884921594 242 1137 5 879741196 249 241 5 879641194 99 4 5 886519097 178 332 3 882823437 251 100 4 886271884 81 432 2 876535131 260 322 4 890618898 25 181 5 885853415 59 196 5 888205088 72 679 2 880037164 87 384 4 879877127 290 143 5 880474293 42 423 5 881107687 292 515 4 881103977 115 20 3 881171009 20 288 1 879667584 201 219 4 884112673 13 526 3 882141053 246 919 4 884920949 138 26 5 879024232 167 232 1 892738341 60 427 5 883326620 57 304 5 883698581 223 274 4 891550094 189 512 4 893277702 243 15 3 879987440 92 1049 1 890251826 246 416 3 884923047 194 165 4 879546723 241 690 2 887249482 178 248 4 882823954 254 1444 3 886475558 293 5 3 888906576 127 229 5 884364867 225 237 5 879539643 299 229 3 878192429 225 480 5 879540748 276 54 3 874791025 291 144 5 874835091 222 366 4 878183381 267 518 5 878971773 42 403 3 881108684 11 111 4 891903862 95 625 4 888954412 8 338 4 879361873 162 25 4 877635573 87 1016 4 879876194 279 154 5 875296291 145 275 2 885557505 119 1153 5 874781198 62 498 4 879373848 62 382 3 879375537 28 209 4 881961214 135 23 4 879857765 32 294 3 883709863 90 382 5 891383835 286 208 4 877531942 293 685 3 888905170 216 144 4 880234639 166 328 5 886397722
c. 上传文件u.txt到hadoop文件系统。
hdfs dfs -put u.txt /data/student
3. 查看文件。
hdfs dfs -ls /data/student
使用hive创建表
1. 执行如下命令,登录hive数据库。
hive
2. 创建user表。
CREATE TABLE emrusers ( userid INT, movieid INT, rating INT, unixtime STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ;
3. 执行如下命令,从hadoop文件系统加载数据到hive数据表。
LOAD DATA INPATH '/data/student/u.txt' INTO TABLE emrusers;
对表进行操作
1. 查看5行表数据。
select * from emrusers limit 5;
2. 查询数据表中有多少条数据。
select count(*) from emrusers;
返回结果如下,您可以看到您数据表中一共有多少数据,
3. 查询数据表中评级最高的三个电影。
select movieid,sum(rating) as rat from emrusers group by movieid order by rat desc limit 3;
返回结果如下,您可以看到您数据表中评级最高的三个电影。