什么是大数据:
大数据字面意思就是非常大的数据1PB以上的数据才上大数据,
定义:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合
大数据的特点:
大量,1PB还是基本计量单位
高速,即使在大量数据的前提下,获取数据速度和分析数据速度非常快速
多样,因为数据量大,所以来源非常复杂
价值高,大数据的数据价值都是非常高的,
大数据可以用来做什么:
数据挖掘:从大量的数据中挖掘出隐含的、未知的、用户可能感兴趣的和对决策有潜在价值的知识和规则。
简单的说,数据挖掘就是从大量的数据中发现有用信息的过程。
人工智能:例如百度无人车
区块链:虚拟货币
什么是人工智能:
字面意思就是类人行为的一种智能
百度百科上:
英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学
其实就是一种人为创造,模仿人类的动作,思考方式的一个机器学习。
由于机器是没有经验这种东西的,所以可以通过大数据来模拟经验
大数据+深度学习=人工智能
大数据技术体系:
开发语言:
Java-在大数据开发方面有很大的优势,目前流行的大数据Hadoop框架、map-reduce框架,很多部分都是用开源的Java语言编写,
Python-优势在于资源丰富,拥有坚实的数值算法、图标和数据处理基础设施,建立了非常良好的生态环境。并不是所有的企业都能自己生产数据,用于决策辅助,更多的互联网企业大部分都是靠爬虫来抓取互联网数据进行分析。而Python在网络爬虫领域有着强势地位,Python 的战略定位就是做一种简单、易用但专业、严谨的通用言语组合。
Scala-是一门多范式的编程语言,Spark是采用Scala语言设计的,用于内存计算、数据本地性(locality)和传输优化、调度优化
分布式存储:
HDFS:分布式文件管理系统、是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。
HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写随机访问超大规模数据集时,可以使用HBase
Redis在业务系统中经常用作缓存系统,即把热点数据或高频数据存到Redis,降低底层数据库负载、提高应用吞吐率;redis灵活的数据结构也能解决特定大数据统计中的痛点
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
分布式计算
MapReduce:是一种编程模型,用于大规模数据集并行运算,它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上
Spark Core:Apache Spark是一个开源的集群计算框架,使数据计算更快(高效运行,快速开发)sparkcore即spark框架的核心库
spark Streamming:是spark框架的组件之一
Storm:是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率
数据仓库技术:
Hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析
Sqoop:)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库
Flume:是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力
Spark SQL:为结构化数据处理引入了一个称为Spark SQL的编程模块。它提供了一个称为DataFrame的编程抽象,并且可以充当分布式SQL查询引擎
机器学习
Mahout: Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
Scikit-learn:SciPy是一个开源的基于Python的科学计算工具包。基于SciPy,目前开发者们针对不同的应用领域已经发展出了为数众多的分支版本,它们被统一称为Scikits,即SciPy工具包的意思。而在这些分支版本中,最有名,也是专门面向机器学习的一个就是Scikit-learn。
MLlib:是Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器。MLlib目前支持4种常见的机器学习问题: 分类、回归、聚类和协同过滤。