大数据简单引入

2012年本站曾对大数据预测:如果说2012年是大数据概念为人所知、引人瞩目、小试牛刀的一年,

那么2013年大数据将会实现产品部署,早期投资获得回报,一小部分的产业被颠覆。

到了2014年,各种大数据项目和系统很可能成为标准配置,到处可见。

2017年:云和大数据、数据仓库合并起来,成为了一项服务,"分析即服务"和"数据即服务"成为主流

  "大数据"作为时下最火热的IT行业的词汇,随之数据仓库、数据安全、数据分析、数据挖掘等等围绕大数量的商业价值的利用逐渐成为行业人士争相追捧的利润焦点。

  谈到大数据不只是云计算Hadoop这类底层技术,而是基于其构建的组件或引擎,如Shark或Hive/Pig。从大数据的定义通常和速率(数据移动得快),体积(数据规模庞大),和种类(非结构化和结构化的信息)三点有关。

  对于"大数据"(Big data)研究机构Gartner给出了这样的定义。"大数据"是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

  大数据分析相比于传统的BI OLAP或数据仓库应用,具有数据量大、查询分析复杂等特点。如果说云计算提供了业务数据处理能力,那么大数据提供了业务数据的挖掘分析能力,数据科学家是对那些专门从事大数据分析者的称谓。

  大数据架构由下面几个部分组成。

  平台:

  • 资源管理:Hadoop发布工具
  • 平台软件:Infochimps, Cloudera, MapR, Hortonworks, IBM, EMC
  • 集群基础:云服务器, 云存储
  • 网络:10GBe, Infiniband
  • Cluster Provisioning集群供应: Amazon Web Services或私有云
  • 管理和监视: Infochimps, Hadoop Distribution, Ganglia, Nagios, Chef, Puppet
  • 集群安全: Infochimps, Hadoop Distribution, Kerberos

  数据:

  • 数据传输和聚合:Hive, Pig, ETL, Storm, Java MapReduce ,考虑的是数据存储和数据访问技术,如何从数据原始状态转为可用的支持业务用例的状态(类似DDD的仓储)。
  • 元数据管理:Custom, HCatalog,建立如何寻找到数据和数据如何被定义消费两者的联系。
  • 低延迟的数据访问: Cassandra, ElasticSearch, Solr, HBase, MongoDB,数据不只是被利用来进行批处理分析, 还要考虑数据是否需要服务于:交互式应用访问,随机访问和顺序访问。
  • 数据管制:Hadoop工具,物理访问策略,校订Auditing 等。

  应用:

  • 开发工具:用于执行数据处理的语言和工具,Hive, Pig, MapReduce, Streaming, Cascading
  • 数据采集:将数据输入集群系统,Messaging, ETL, Flume, Kafka, Storm, Sqoop,需要考虑的是数据是否需要持久,丢失怎么办,采取批处理还是流式?
  • 数据发布:将数据从集群输出,Messaging, ETL,需要考虑的是数据管道,如何回滚和重放。
  • 工作流管理: 企业工具 (UC4, Control-M), Oozie, Azkaban, Stampede

  报表和分析:

  • 数据科学和算法:Mahout, RHadoop, R, Weka,机器学习的工具和库, 支持并行分布式分析,
    weka是一个机器学习和数据挖掘的Java库。
  • BI和报表: Tableau, Pentaho, Datameer, Karmasphere, Traditional BI Tools ,传统的BI业务报告,和传统数据仓库中的关系数据结合的工具。

 实际中可根据以上架构设计的一个大数据案例

 

推荐系统案例

  目前,推荐系统 自然语言处理(NLP:Natural Language Processing)是大数据已经实现的应用,Stack Exchange/Stack Overflow能够基于用户回答问题的历史提示他能够回答的问题,亚马逊能够基于你之前购买历史推荐产品给你。那么这后面的推荐机制是如何实现的?

  需求场景是:根据用户过去回答的问题,推测他将来能够回答的问题。

  用户和问题之间关系如下图:

  首先我们需要发现一对问题出现多少次,注意这个矩阵是和用户没有关系,跨越用户的,例如 Q1 和 Q2一起在上图出现了两次, 那么 {Q1,Q2}将是 2. 同理我们得出其他一对问题出现次数,如下图:

  上面是问题出现次数,无关用户,下面我们将其和用户喜好联系起来:
  1.因为是配对问题,有两个问题,如果其中一个问题被某个用户回答了,那么我们就可发现另外一个问题出现的频率。
  2.清除已经被用户回答的问题

  对于第一步实现,我们需要用用户喜好矩阵和上面矩阵相乘。
  比如以User3为例,其对应问题矩阵[Q1,Q2,Q3,Q4] 是[0,1,1,0],也就是说他已经回答了Q2和Q3问题,但是Q1和Q4没有回答,那么就用上面问题次数的矩阵相乘。结果如下:

  用User3的[0,1,1,0]和第一行Q1的[2,2,2,0]相乘后累计得4;[0,1,1,0]再和第二行Q2相乘后后累计得6,以此类推。

  既然Q2和Q3已经被User3回答了,这个删除不算,剩余的是Q1和Q4,因为Q1的值是4, 大于Q4的值2,那么我们就认为Q1和User3的相关性要高于Q4。

  注意:用户喜爱矩阵将是一个稀疏矩阵sparse matrix (主要是0),因为用户将要回答的问题只是过去问题的一个子集。(稀疏矩阵用于语言处理:http://www.jdon.com/45591)

  上述逻辑的优势在于,我们可以使用一个分布式 map reduce模型实现,构建一个发生矩阵,然后发现每个用户的商品喜好。

  下面是该推荐系统实现:
  1. 准备设定一个Hadoop集群
  2.需要有样本数据用来分析 (使用Stack Overflow data)
  Job 1 – 用来Extract数据 - 每行用 {UserId, QuestionId} 代表用户回答的所有问题
  Job 2 – 建立推荐- 用上面Map Reduce输出结果建立推荐模型,每个用户可能相关的条目列表。

----------

以上内容源自:http://www.jdon.com/bigdata.html

原文地址:https://www.cnblogs.com/quchunhui/p/5286920.html