基于Hadoop大数据分析应用场景与实战

为了满足日益增长的业务变化,京东的京麦团队在京东大数据平台的基础上,采用了Hadoop等热门的开源大数据计算引擎,打造了一款为京东运营和产品提供决策性的数据类产品-北斗平台。

一、Hadoop的应用业务分析

大数据是不能用传统的计算技术处理的大型数据集的集合。它不是一个单一的技术或工具,而是涉及的业务和技术的许多领域。

目前主流的三大分布式计算系统分别为:Hadoop、Spark和Strom:

  • Hadoop当前大数据管理标准之一,运用在当前很多商业应用系统。可以轻松地集成结构化、半结构化甚至非结构化数据集。
  • Spark采用了内存计算。从多迭代批处理出发,允许将数据载入内存作反复查询,此外还融合数据仓库,流处理和图形计算等多种计算范式。Spark构建在HDFS上,能与Hadoop很好的结合。它的RDD是一个很大的特点。
  • Storm用于处理高速、大型数据流的分布式实时计算系统。为Hadoop添加了可靠的实时数据处理功能

Hadoop是使用Java编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache的开源框架。 Hadoop框架应用工程提供跨计算机集群的分布式存储和计算的环境。 Hadoop是专为从单一服务器到上千台机器扩展,每个机器都可以提供本地计算和存储。

Hadoop适用于海量数据、离线数据和负责数据,应用场景如下:

场景1:数据分析,如京东海量日志分析,京东商品推荐,京东用户行为分析

场景2:离线计算,(异构计算+分布式计算)天文计算

场景3:海量数据存储,如京东的存储集群

基于京麦业务三个实用场景

  • 京麦用户分析
  • 京麦流量分析
  • 京麦订单分析

都属于离线数据,决定采用Hadoop作为京麦数据类产品的数据计算引擎,后续会根据业务的发展,会增加Storm等流式计算的计算引擎,下图是京麦的北斗系统架构图:

(图一)京东北斗系统

二、浅谈Hadoop的基本原理

Hadoop分布式处理框架核心设计

  • HDFS :(Hadoop Distributed File System)分布式文件系统
  • MapReduce: 是一种计算模型及软件架构

2.1 HDFS

HDFS(Hadoop File System),是Hadoop的分布式文件存储系统。

将大文件分解为多个Block,每个Block保存多个副本。提供容错机制,副本丢失或者宕机时自动恢复。默认每个Block保存3个副本,64M为1个Block。将Block按照key-value映射到内存当中。

(图二)数据写入HDFS

(图三)HDFS读取数据

2.2 MapReduce

MapReduce是一个编程模型,封装了并行计算、容错、数据分布、负载均衡等细节问题。MapReduce实现最开始是映射map,将操作映射到集合中的每个文档,然后按照产生的键进行分组,并将产生的键值组成列表放到对应的键中。化简(reduce)则是把列表中的值化简成一个单值,这个值被返回,然后再次进行键分组,直到每个键的列表只有一个值为止。这样做的好处是可以在任务被分解后,可以通过大量机器进行并行计算,减少整个操作的时间。但如果你要我再通俗点介绍,那么,说白了,Mapreduce的原理就是一个分治算法。

算法:

MapReduce计划分三个阶段执行,即映射阶段,shuffle阶段,并减少阶段。

映射阶段:映射或映射器的工作是处理输入数据。一般输入数据是在文件或目录的形式,并且被存储在Hadoop的文件系统(HDFS)。输入文件被传递到由线映射器功能线路。映射器处理该数据,并创建数据的若干小块。

减少阶段:这个阶段是:Shuffle阶段和Reduce阶段的组合。减速器的工作是处理该来自映射器中的数据。处理之后,它产生一组新的输出,这将被存储在HDFS。

(图四)MapReduce

2.3 HIVE

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,这套SQL 简称HQL。使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据。而mapreduce开发人员可以把己写的mapper 和reducer 作为插件来支持Hive 做更复杂的数据分析。

(图五)HIVE体系架构图

由上图可知,hadoop和mapreduce是hive架构的根基。Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor)。

三、Hadoop走过来的那些坑

进行HIVE操作的时候,HQL写的不当,容易造成数据倾斜,大致分为这么几类:空值数据倾斜、不同数据类型关联产生数据倾斜和Join的数据偏斜。只有理解了Hadoop的原理,熟练使用HQL,就会避免数据倾斜,提高查询效率。  

本文作者:王雷

来源:51CTO

时间: 2024-08-01 20:31:41

基于Hadoop大数据分析应用场景与实战的相关文章

BigInsights:解读IBM基于Hadoop的数据分析平台

毫无疑问,大数据成了2012年的热门词.根据国外统计机构的报告,大数据处理在今年的市场规模已经达到700亿美元并且正以每年15-20%的速度增长.几乎所有主要的大科技公司都对大数据感兴趣,对该领域的产品及服务进行了大量投入.其中包括了IBM.Oracel.EMC.HP.Dell.SGI.日立.Yahoo等,而且这个列表还在继续. IBM也在2011年中旬对外发布了针对大数据处理和分析技术:在SmartCloud平台上新增基于Apache Hadoop的服务InfoSphere BigInsigh

微信正式上线“微信指数”,基于微信大数据分析的移动端指数

昨日,微信正式上线"微信指数",这是微信官方提供的基于微信大数据分析的移动端指数.在移动互联网时代,社交数据越来越重要.热点,往往不仅只有一个人群在关注.作为一款月活跃用户达8.89亿的应用,微信已经成为人们日常生活中必不可少的工具."喜欢财经还是八卦""讨论买房还是卖房""爱好男还是爱好女","这段时间萨德如何了",每个人都有自己不同的偏好和习惯.你可能经常看到某个事件在"刷屏",但没

《Hadoop大数据分析与挖掘实战》——2.1节概述

2.1 概述2.1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.Hadoop以分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce(Google MapReduce的开源实现)为核心,为用户提供了系统底层细节透明的分布式基础架构.分布式文件系统HDFS的高容错性.高伸缩性等优点允许用户将Hadoop部署在低廉的硬件上,形成分布式文件系统:MapReduce分布式编程模型允许用户在不了解分布式系统底层

《R与Hadoop大数据分析实战》一1.7 Hadoop的子项目

1.7 Hadoop的子项目 Mahout是一个很强大的数据挖掘库,其中包含大部分与数据挖掘有关的机器学习算法,可实现聚类.分类.回归分析及统计建模等,可用于智能应用,它也是一个不错的机器学习库. Apache Mahout是一个商用软件,需要Apache软件分发的许可证.Apache Mahout的目标是建立一个充满活力.反应灵敏.多样化的社区,以方便对项目本身以及潜在使用案例的讨论. 使用Mahout的一些公司如下: Amazon:这是一个提供个性化推荐的购物网站. AOL:这是一个有购物建

《R与Hadoop大数据分析实战》一2.5 在R环境中编写Hadoop MapReduce程序的方式

2.5 在R环境中编写Hadoop MapReduce程序的方式 我们知道对将R工具用于分析的统计学家.网络分析师以及产品经理来说,用MapReduce进行Hadoop大数据处理是一件非常重要的事,因为补充MapReduce的编程知识对于用Hadoop将分析整合到MapReduce来说是必要的.并且,我们知道R是一个一直以来普及程度逐步提升的工具:为了整合R,有许多程序包和函数库一直在改进.因此为了研发基于R和Hadoop计算能力运行的MapReduce算法程序,我们需要R和Hadoop的中间软

《R与Hadoop大数据分析实战》一1.4 Hadoop的安装

1.4 Hadoop的安装 现在假定你已经了解了R语言,知道它是什么,如何安装它,它的主要特点是什么,以及为什么要使用它.现在,我们需要知道R的局限性(这样能更好地引入对Hadoop的介绍).在处理数据前,R需要将数据加载到随机存取存储器(RAM).因此,数据应该小于现有机器内存.对于数据比机器内存还要大的,我们将其看做大数据(由于大数据还有许多其他定义,这只适用于我们现在所说的例子). 为了避免这类大数据问题,我们需要扩展硬件配置,但这只是一个临时解决方案.为了解决这一问题,我们需要使用一个H

《Hadoop大数据分析与挖掘实战》——1.4节数据挖掘建模过程

1.4 数据挖掘建模过程从本节开始,将以餐饮行业的数据挖掘应用为例来详细介绍数据挖掘的建模过程,如图1-1所示. 1.4.1 定义挖掘目标针对具体的数据挖掘应用需求,首先要明确本次的挖掘目标是什么?系统完成后能达到什么样的效果?因此必须分析应用领域,包括应用中的各种知识和应用目标,了解相关领域的有关情况,熟悉背景知识,弄清用户需求.要想充分发挥数据挖掘的价值,必须要对目标有一个清晰明确的定义,即决定到底想干什么. 针对餐饮行业的数据挖掘应用,可定义如下挖掘目标:实现动态菜品智能推荐,帮助顾客快速

《R与Hadoop大数据分析实战》一第2章 编写Hadoop MapReduce程序

第2章 编写Hadoop MapReduce程序 在第1章中,我们学习了如何搭建R和Hadoop开发环境.既然我们对大数据分析感兴趣,接下来就学习如何使用Hadoop MapReduce进行大数据处理.在本章中,我们要讨论MapReduce的基础概念,为何它是不可或缺的,以及如何在Apache Hadoop上进行MapReduce编程等内容.本章节将会涉及如下内容:MapReduce基础概念Hadoop MapReduce技术Hadoop MapReduce原理编写Hadoop MapReduc

《R与Hadoop大数据分析实战》一1.1 安装R

1.1 安装R 可以通过访问R的官方网站下载相应的版本.这里提供了对应三种不同操作系统的下载步骤,包括在Windows.Linux和Mac上安装R.下载最新版本的R,其中包括所有最新的补丁和错误解决方案.对于Windows操作系统,请执行以下步骤: 访问www.r-project.org. 点击CRAN,选择CRAN镜像(CRAN mirror),并选择你的Windows操作系统(捆绑到Linux:Hadoop通常在Linux环境下运行). 从镜像中下载最新的R版本. 执行下载的.exe程序,安