还是先极简介绍一下EMR是什么,Amazon EMR 基于 Hadoop 的开源框架将您的数据分布在可重新调整大小的 Amazon EC2 实例集群中并进行处理。Amazon EMR 可用于各种应用程序中,包括日志分析、Web 索引、数据仓库、机器学习、财务分析、科学模拟和生物信息学。具体的功能特性可以直接到官网查阅。直接上实验:

实验包括:
1. 使用EMR创建Hadoop集群
2. 定义schema,创建示例表。
3. 通过HiveQL分析数据,并将分析结果保存到S3上
4. 下载已经分析结果数据。
Task1:创建一个S3 桶
创建一个存储桶比如hadoop202006…

Task2:创建EMR集群

这里我解释一下Hadoop集群中的一些组件,了解大数据的同学直接忽略就好。

Apache Hadoop:在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。
Ganglia:分布式监控系统
Apache Tez:支持 DAG 作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能。比如Hive或Pig可以将Tez作为执行引擎。
Hive:可以通过类似SQL语句实现快速MapReduce统计
Hue:通过使用Hue我们可以通过浏览器方式操纵Hadoop集群。例如put、get、执行MapReduce Job等等。
Pig:它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。

解释一下,Master、Core、Task。
Master Node:主节点集群管理,通常运行分布式应用程序的Master组件,例如,YARN ResourceManager,HDFS NameNode。
Core Node:会运行 HDFS的 DataNode, 运行YARN守护程序,MR任务等。
Task Node:任务节点是可选的,做为可扩展的算力。不运行HDFS的DataNode守护程序,不做HDFS的存储。
MasterNode至少有一个
CoreNode 至少一个
TaskNode 可以有一个(可选)
1.
2.
3.

当Cluster状态为Waiting时,执行Task3.

Task3:使用Hive脚本处理数据
在处理数据之前肯定要明确两件事情:

处理什么数据
如何处理数据
处理什么数据:
这里以CDN的log日志为例,其中一条数据的格式为:
2017-07-05 20:05:47 SEA4 4261 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-2.jpeg 200 - Mozilla/5.0%20(MacOS;%20U;%20Windows%20NT%205.1;%20en-US;%20rv:1.9.0.9)%20Gecko/2009040821%20Chrome/3.0.9
解释如下:

如何处理数据
在EMR集群中,添加STEP,
Step类型选择:Hive progran。
多说一句:目前有4中Task类型,自定义JAR,Streaming program来处理流数据,Hive/Pig执行类SQL。

Name:Process logs
Script S3 location:s3://us-west-2.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q
(一会儿分析一个这个脚本都执行了什么)
Input S3 location: s3://us-west-2.elasticmapreduce.samples(这个就是CDN的log日志)
Output S3 Location:选择我创建的hadoop202006(这个就是我们处理后的文件存放的位置)
Arguments:-hiveconf hive.support.sql11.reserved.keywords=false
如下图:

脚本都干了啥?(你可以SSH到Cluster上直接执行HiveQL)
创建一个叫cloudfront_logs的Hive table
CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (DateObject Date,Time STRING,Location STRING,Bytes INT,RequestIP STRING,Method STRING,Host STRING,Uri STRING,Status INT,Referrer STRING,OS String,Browser String,BrowserVersion String)

对log的格式进行序列化/反序列化 RegEx SerDe 并写入CDN的log数据到Hive表中
ROW FORMAT SERDE ‘org.apache.hadoop.hive.serde2.RegexSerDe’WITH SERDEPROPERTIES ( “input.regex” = "(?!#)([ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+[(]+[(]( https://s3-us-west-2.amazonaws.com/us-west-2-aws-training/awsu-spl/spl-166/1.0.7.prod/instructions/en_us/[^;]+).*%20([/]+) /") LOCATION '")LOCATION 

 {INPUT}/cloudfront/data/’;

查询日中Client端使用的OS数量by日期并把查询结果写入S3
INSERT OVERWRITE DIRECTORY '${OUTPUT}/os_requests/'SELECT os, COUNT(*) countFROM cloudfront_logsWHERE dateobjectBETWEEN ‘2014-07-05’ AND '2014-08-05’GROUP BY os;

Task4:收获果实:

Done!
-----------------------------------
©著作权归作者所有:来自51CTO博客作者栗子哥的原创作品,如需转载,请与作者联系,否则将追究法律责任
【AWS征文】[大数据][Hadoop] 使用EMR做大数据分析
https://blog.51cto.com/u_13746986/2531865

aws的EMR搭建Hadoop集群相关推荐

  1. hadoop集群_Ambari搭建hadoop集群

    Ambari搭建hadoop集群 Ambari提供了对Hadoop更加方便快捷的管理功能,主要包含: 通过一步一步的安装向导简化了集群供应. 预先配置好关键的运维指标(metrics),可以直接查看H ...

  2. 基于OSS存储搭建Hadoop集群

    简介 本文以Ubuntu操作系统为例,介绍基于Aliyun OSS的hadoop-3.0.0-beta1的集群环境搭建过程,示例的集群环境包括1个master和2个slave节点(slave1和sla ...

  3. linux hadoop集群搭建,hadoop集群搭建

    hadoop集群搭建步骤 实验介绍 下面将要在三台linux虚拟机上搭建hadoop集群. 知识点 linux基本命令 集群安装 完成实验需要以下相关知识 解压命令 tar -zxvf XX.tar. ...

  4. Docker搭建hadoop集群

    参考https://github.com/kiwenlau/hadoop-cluster-docker/blob/master/start-container.sh 因为之前在VMware上操作Had ...

  5. 华为云 和 阿里云 跨服务器搭建Hadoop集群

    目录 华为云 和 阿里云 跨服务器搭建Hadoop集群 说明 期间遇到的问题 CentOS6 7 8更换阿里yum源 修改服务器名称 安装JDK 安装Hadoop 编写集群分发脚本 xsync scp ...

  6. cdh搭建hadoop集群_Hadoop宿醉:使用Apache Whirr启动hadoop集群CDH4

    cdh搭建hadoop集群 这篇文章是关于如何在EC2实例上启动CDH4 MRv1或CDH4 Yarn集群的. 据说您可以在Whirr的帮助下在5分钟内启动一个集群! 当且仅当一切工作正常时,这才是正 ...

  7. Docker学习七:使用docker搭建Hadoop集群

    本博客简单分享了如何在Docker上搭建Hadoop集群,我的电脑是Ubuntu20,听同学说wsl2有些命令不对,所以建议在虚拟机里按照Ubuntu或者直接安装双系统吧 Docker学习一:Dock ...

  8. hadoop搭建_阿里云搭建Hadoop集群

    1 前言 在讲述Hadoop集群搭建之前,首先要了解Hadoop和集群两个名词,Hadoop是由Apache基金会开发的分布式系统基础架构,简单理解就是大数据技术应用的基础.集群可以理解为多台装有ha ...

  9. Hadoop(二)搭建Hadoop集群

    在了解Hadoo基础之后,借助于docker快速实现虚拟化,搭建Hadoop集群,进一步了解Hadoop,实地测试,实地操作,更进一步的了解Hadoop. 首先需要了解Hadoop的各个模块概念已经功 ...

最新文章

  1. 【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
  2. c四舍五入取整函数_学会这8个Excel函数,工作瞬间好轻松!
  3. 操作系统原理之I/O设备管理(第六章下半部分)
  4. github哪些协议能商用_GitHub 上有哪些一般人也可以用的项目?
  5. ajax php 观察者模式,JavaScript观察者模式定义和dom事件实例详解
  6. POJ-2151 Check the difficulty of problems 概率DP
  7. google+stackoverflow_解决stackOverflow打开慢的问题
  8. python读取ini文件
  9. oracle shutdown 默认,oracle shutdown 没有反应
  10. EasyUI中Datagrid列定位方法
  11. 如何在Cocos2D游戏中实现A*寻路算法(三)
  12. S实现控制图片显示大小的方法【图片等比例缩放功能】
  13. PLC程序的组成结构
  14. 【MATLAB图像融合】[18]双通道PCNN模型实现图像融合
  15. SAS安装过程中出现unknow等或没有生成ip地址问题的解决办法
  16. ZOJ - 3880 Demacia of the Ancients
  17. webpack-theme-color-replacer自定义element-ui主题
  18. python雨课堂答案_雨课堂和微助教的比较分析
  19. DBA常用Sql语句--留着给自己看
  20. 特惠|好物推荐iPhone充电线两条装6.9元

热门文章

  1. 教你轻松解除word文档保护(转)
  2. 404单页带时间访问一次自动更换壁纸
  3. 拆解飞机黑匣子,看看内部构造、PCB及芯片!
  4. 教你一目了然树的概念与结构(入门级)
  5. 怎样在线生成gif动图?如何将png转换gif动图?
  6. c语言循环if不起作用,c语言if语句中条件不成立会一直等待吗
  7. 如何看待 35 岁提前退休的人?
  8. Vue学习(一)基本属性、Axios通信、插槽、官方脚手架搭建
  9. 计算机毕业设计java+ssm医药进销存管理系统(源码+系统+mysql数据库+Lw文档)
  10. 通过github搭建个人博客2-博客个性化设置