大数据
一.什么是大数据
大数据是指很多很多的数据,主要源于web2.0之后,数据库中的数据量累计起来很庞大,在对数据进行操作(主要指查询)会变得很慢,对机器的性能要求会很高,如果数据量达到足够大(如十几亿),那服务器会崩溃的
1、有海量的数据
2、有对海量数据进行挖掘的需求
3、有对海量数据进行挖掘的软件工具(hadoop、spark、storm、flink、tez、impala…)
大数据在现实生活中的具体应用
电商推荐系统:基于海量的浏览行为、购物行为数据,进行大量的算法模型的运算,得出各类推荐结论,以供电商网站页面来为用户进行商品推荐。
精准广告推送系统:基于海量的互联网用户的各类数据,统计分析,进行用户画像(得到用户的各种属性标签),然后可以为广告主进行有针对性的精准的广告投放。
二.大数据解决了什么问题
大数据解决对海量数据的存储、查询、分析计算等操作,主要应用在利用庞大的数据归类分析用户的偏好,利用用户的历史信息得出相应的统计账单等,将同行业的大公司的数据进行计算分析,可以挖掘出一些隐含价值。
三 技术体系
四 大数据需要学习什么
第一方面:大数据离线分析
一般处理T+1数据(T是指日、周、月、年),处理历史数据
模块1:Hadoop
包括四大块(common、yarn、MapReduce、HDFS)
主要掌握环境搭建、处理数据的思想
模块2:Hive
大数据数据仓库
通过写SQL对数据进行操作,类似于mysql数据库中的sql
模块3:HBase
基于HDFS的NOSQL数据库
面向列的存储
协作框架:
sqoop(桥梁:HDFS 《==》RDBMS)
flume:收集日志文件中信息
调度框架anzkaban,
了解:crotab(Linux自带)、zeus(Alibaba)、Oozie(cloudera)
扩展前沿框架:kylin、impala、ElasticSearch(ES)
第二方面:大数据离线分析
以spark框架为主
Scala:OOP + FP
sparkCore:类比MapReduce
sparkSQL:类比hive
sparkStreaming:实时数据处理
kafka:消息队列
前沿框架扩展:flink
阿里巴巴 blink
第三方面:大数据机器学习(扩展)
spark MLlib:机器学习库
pyspark编程:Python和spark的结合
推荐系统
python数据分析
Python机器学习
什么是hadoop
Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。
HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
把HDFS理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘。
把MapReduce理解成为一个计算引擎,按照MapReduce的规则编写Map计算/Reduce计算的程序,可以完成计算任务。
Hadoop 能干什么
大数据存储:分布式存储
日志处理:擅长日志分析
ETL:数据抽取到oracle、mysql、DB2、mongdb及主流数据库
机器学习: 比如Apache Mahout项目
搜索引擎:Hadoop + lucene实现
数据挖掘:目前比较流行的广告推荐,个性化广告推荐
Hadoop是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。
分布式计算分为 离线分布式计算和流线计算
1.离线分布式计算在计算开始之前就已知所有数据,并且数据不会变化,计算之后直接产生结果
主要技术:mapreduce SparkCore
A.Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。
B.SparkCore:RDD是Spark的基石,是实现Spark数据处理的核心抽象
Hadoop的MapReduce是一种基于数据集的工作模式,面向数据,这种工作模式一般是从存储上加载数据集,然后操作数据集,最后写入物理存储设备。数据更多面临的是一次性处理。
2. 流式分布式计算,对大规模流动数据在不断的变化的过程中实时计算,来一条数据就计算一下
主要技术:Spark Streamming Storm
Storm是免费开源的分布式实时计算框架。Hadoop用于对数据的批处理,而Storm可以可靠地处理海量的流式数据。Storm是简单易用的,可以与多种编程语言结合使用
Storm有很多使用场景:实时分析,线上机器学习,持续计算,分布式RPC,ETL等等。Storm单个节点每秒可以处理百万级别的tuple。Storm是可靠的、易用的、可扩展的、高容错的。
Storm集成了队列和数据库技术。一个Storm topology可以以任意复杂的方式来处理数据流,并且可以在计算的过程中可以对数据流重新分区
本文转自 知乎,原文链接:https://zhuanlan.zhihu.com/p/72881430,如需转载请自行联系原作者