我对大数据相关技术的学习心得及理解

本篇为这一段时间以来我对大数据相关技术的学习心得及理解,主要涉及以下几个方面: noSql, 集群, 数据挖掘, 机器学习,云计算,大数据,以及Hadoop和Spark。
主要都是一些初级的概念澄清之类的东西,并且比较凌乱,慎入。
* 1. NoSQL
我的理解是,NoSQL主要用于存储一些非结构化数据, 是关系数据库与文件存储方式(比如视频文件就适合使用文件的方式存储)的过度。

** 1.1 NoSQL的分类:
列存储: Hbase(BigTable的开源实现),可存储结构化数据。 Cassandra
文档存储: MongoDB CouchDB Domino
键值对存储: MemcacheDB Rddis BerkeleyDB(BDB,oracle)
图存储: Neo4j

对象存储:
xml数据库:

上述种类中,前四类经常被提及。

** 1.2 常见NoSQL
*** 列存储 分布式数据库 Hbase
Hbase是Hadoop中的数据库,是google BigTable的开源实现。
*** 键值对存储 MemcacheDB

**** wiki上的介绍:
MemcacheDB is a distributed key-value storage system designed for persistent. It is NOT a cache solution, but a persistent storage engine for fast and
reliable key-value based object storage and retrieval. It conforms to memcache protocol(not completed, see below), so any memcached client
can have connectivity with it. MemcacheDB uses Berkeley DB as a storing backend, so lots of features including transaction and replication are supported.

**** 与memcache memcached 的区别
memcached: 主要用在MySQL+Memcached的架构(Mem-cache-d)中. memcache 应该是与memcached类似的概念。

MemcacheDB的前端缓存是Memcached。 memcachedb可以将memcached 缓存的东西持久化到berkeley DB中。 memCachedb是sina的产品。

*** NoSQL数据库的分布式模型:

分片模型: 数据按照字母序分片。

为了防止数据丢失及保持系统在某些节点失效时的可用性,数据会被复制并存储到不同的节点。这些节点之间可能具有主从、对等关系。
主从模型中的主节点主要负责数据的更新,并把更新后的数据复制到从节点。从节点主要相应数据的读取。
对等模型中节点的地位相同,都可以响应对数据的更新和读取。

除此之外,还可以把分片模型与主从模型/对等模型综合起来使用。在分片和主从复制中的一拖一方案中,分片的作用在于数据的分布式存储;主从复制的作用在于为各个分片结点提供备份,
增加数据安全;

* 2. distributed system & cluster
** 分布式系统与集群的区别
集群中的节点常物理上比较近;分布式系统的节点可以遍布互联网。 但在Hadoop等框架中,这两个概念的区分正在变得模糊。

** 集群
集群的最大瓶颈,以及如何解决该瓶颈?
磁盘IO。

** 分布式系统
*** 分布式操作系统: 貌似都不知名。跟分布式系统貌似不是一个概念? 我的理解是分布式操作系统是分布式系统的一个子概念。

*** 分布式文件系统
又名分布式数据库,比如Hbase等。

* 3. 数据挖掘

** 概念

数据挖掘是应用到数据集(也包括大数据)之上的一种技术,

数据挖掘是数据库知识发现(KDD)中的一个步骤,是海量有用数据快速增长的产物。所谓数据挖掘是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值的信息的过程。

数据挖掘是KDD(知识发现,Knowledge Discovery in database)过程中的分析步骤。发现的模式可能有: 数据记录的分组(group of) , 不常见记录,记录见的依赖,等。

数据挖掘的总体目标是在数据集中抽取信息,并转换到可理解的结构。信息必须是以前未知的。

数据挖掘的前沿:基于Hadoop的大数据挖掘

*** 与数据分析的关系
数据处理?数据分析是一回事, 包括数据挖掘就是数据分析的一大类方法。都是要从数据里面找到你想要的信息,分析数据特征,对数据进行某些处理,然后看其显示的一些问题。
*** 与数据库的关系
数据结构→数据库→数据仓库→数据挖掘→Web数据挖掘

** 数据挖掘与机器学习\统计等其他概念的关系

数据挖掘与机器学习概念非常类似.

在大数据集中发现模式(和知识) 会使用人工智能、机器学习和数据库系统这些领域的交叉部分。

绝大多数数据挖掘技术都来自机器学习领域,但机器学习研究往往并不把海量数据作为处理对象。因此,数据挖掘要对机器学习算法进行改造,使得算法性能和空间占用达到实用的地步。

对数据挖掘而言,数据库提供数据管理技术,机器学习和统计学提供数据分析技术。 统计学往往醉心于理论的优美而忽视实际的效用,因此,统计学界提供的很多技术通常都要在机器学习界进一步
研究,变成有效的机器学习算法之后才能再进入数据挖掘领域。因此 统计学主要是通过机器学习来对数据挖掘发挥影响,而机器学习和数据库则是数据挖掘的两大支撑技术。

** 前处理
在使用数据挖掘算法前,要设置目标数据。常使用数据仓库。目标集合将被清洗,数据清洗去除包含丢失数据的数据,以及包含噪音的观察结果。

** 数据挖掘常包含六类常见任务

:聚类 分类(邮件和垃圾邮件)

聚类分析(cluster analysis ), 可以被形式化为多目标优化问题。
数据挖掘和机器学习往往使用相同的算法,但是往往具有不同的目标。

** 关联推荐和相关内容推荐,
关联推荐就是我们常说的购物篮分析,即使用购买了某商品的用户同时购买了什么这个规则来发现商品间的潜在联系。关联推荐是基于用户行为分析的推荐,而相关内容推荐是基于内容固有特征的
推荐,只与内容本身有关,与用户的行为完全无关,所以相关内容推荐的模型是一种“冷启动”的算法,不需要任何历史浏览访问数据的支持。

关联推荐在实现方式上可以分为两种:
以产品分析为基础的关联推荐和以用户分析为基础的关联推荐。
产品分析的关联推荐指的是通过分析产品的特征发现他们之间的共同点。

而基于用户分析的推荐是通过分析用户的历史行为数据,可能会发现购买了xx的很多用户也买了xxx,那么就可以基于这个发现进行推荐,这种方法就是数据挖掘中的关联规则挖掘,其中最经典的
案例就是沃尔玛的啤酒与尿布的故事。
( 捆绑销售)

基于用户行为分析的关联推荐:

关联规则的实现原理是从所有的用户购物数据中(如果数据量过大,可以选取一定的时间区间,如一年、一个季度等),寻找当用户购买了A商品的基础上,又购买了B商品的人数所占的比例,
当这个比例达到了预设的一个目标水平的时候,我们就认为这两个商品是存在一定关联的,所以当用户购买了A商品但还未购买B商品时,我们就可以向该类用户推荐B商品。

关联规则挖掘一般采用基于频繁集的Apriori算法。

** 常见算法
KNN算法及其应用
KNN( K-Nearest Neighbor
algorithm),K最近邻算法,通过计算样本个体间的距离或者相似度寻找与每个样本个体最相近的K个个体,KNN一般被用于分类算法没在给定分类规则的训练集的基础上对总体的样本进行分类。
算法的原理如下:
基于内容间相似度的计算结果,套用KNN的原理实现相关内容推荐,只要根据每个内容与之比较的所有内容的相似度分值降序排列,并取前K个内容作为该内容的最相关内容推荐给用户就可以了。
距离和相似度度量是KNN的基础算法,因为KNN的个体相似度或邻近的距离都会选择距离度量和相似度度量中的某种方法进行计算。

** 距离和相似度度量:

在数据分析和数据挖掘中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如KNN和K均值。

可以用哪些方法来衡量两个个体间的差异,主要分为距离度量和相似度度量。
距离度量: 用于度量个体在空间上存在的距离,距离越远说明个体间的差异越大。距离度量可以分为: 欧几里得距离(度量多维空间中各个点之间的绝对距离);马氏距离,等。

相似度度量:
即计算个体间的相似度,与距离度量相反,相似度度量的值越小,说明个体间差异越大。

余弦相似度。

** s曲线
s型曲线是最典型的一类成长曲线,也许你的网站的用户访问量或者销售额正是以类似这种趋势增长的。发现这种规律后,就可以用数据统计的方法对其进行分析,对于这类有规律的线性曲线,
最常用的方法就是回归分析?:

* 4. 机器学习

机器学习一词出现较晚,它是以解决预测问题为目的,一系列建模\优化\设计算法的过程。

**  从买芒果的例子看懂机器学习:

来自36Kr: 从买芒果到机器学习:  建立芒果甜不甜的规则:
if (color is bright yellow and size is big and sold by favorite vendor): mango is sweet.
if (soft): mango is juicy.
etc.

这些规则是人制定的,然后交给电脑程序,去自动检测。然则这些规则能够由机器给出呢?

机器学习算法(classification、regression)是普通算法的改进版,它们让你的程序变得更“聪明”,能从你提供的数据里自动学到东西。

相关性模型,根据芒果的物理特征:颜色\大小\形状\产地等,可以预测哪些芒果是甜的\熟的\多汁的。

** 机器学习与其他概念的关系
*** 机器学习与人工智能的关系?

人工智能最大,机器学习是人工智能里最近比较流行的一个分支。

机器学习通常会用统计分析的方法进行分析,统计学在机器学习里占有非常重要的地位。
神经网络是机器学习里一个研究非常广泛的方法,或者说是一种建模方法。

模式识别和数据挖掘使用机器学习的模型解决,当然也用统计分析的模型。

*** 机器学习与统计的关系
统计的方法可以用来机器学习,比如:聚类\贝叶斯,等等。 当然机器学习还有很多其他的方法。

机器学习是算法的研究,致力于研究能够根据经验自动提高的算法。神经网络是一种模型,数学模型。可用于模式识别和机器学习。

在统计和数据学家看来,机器学习就是计算机学家做统计. 统计分析: 线性回归

*** 机器学习与模式识别

模式识别更偏向于应用,比如是针对具体的人脸\文字\语音等进行针对性的研究,而机器学习更偏重的是方法,不是针对某个具体问题而是对于整个流程或者流程中的某一部分做通用的算法研究

机器学习强调学习能力,机器在算法的指导下有学习的能力,比如神经网络(非线性回归),神经网络是学习算法中的一个很火的模型

***  数据挖掘和机器学习的区分是: 
数据挖掘问题一般都有巨大数据,尤其指计算效率比统计精度更重要的问题,通常站在商业的角度;机器学习则更偏向于人工智能的方向。
数据挖掘: 啤酒尿布要放一块。 
李嘉诚有100多亿美元,全国平均人均可支配收入是13279人民币:则可以挖掘出: 李嘉诚很有钱。

机器学习是一种方法,通常用来进行模式识别。

* 5. cloud computing

云计算可以分为三个层次: IaaS, Paas和Saas。下面以ibm的smartCloud为例进行分析。

** --------------------------ibm smartCloud---------------

云计算、大数据分析、移动、社交、安全(CAMSS)为代表的新兴业务
the smartCloud is composde by three parts:

*** IaaS

OpenStack 开放云操作系统 (分布式系统?) 私有云也可以由云端厂商提供?

*** PaaS

BlueMix 使得组织和开发人员能够快速而又轻松地在云上创建、部署和管理应用程序(web,移动,大数据,新型智能设备等)。
而Bluemix将开发者和创业者作为了重点开拓对象,这在IBM云计算历史上是很少见的,这是IBM的转型中的一个重大转变。

“在国外Bluemix是搭载在SoftLayer上,在国内将搭载在OpenStack上”,胡世忠解释说,这意味着在国内支持OpenStack的平台上Bluemix都可以落地。

*** Saas

compose, a company that offers mongoDB, Redis, and other database as a service
(DBaaS). --- the copyright issue??

high availability (HA), failover,
capability vs avaliablity

* 6. 大数据:

大数据指为了在大数据集中发现巨大潜在价值的技术.
大数据是指数据量大,不是一般的大,海量. 数据集太大或者太复杂,以至于传统的数据处理(data processing)不再适用。常用于指一些用于发掘数据中潜在价值的预测性分析。
关系型数据库管理系统和桌面统计工具、可视化包在处理大数据方面往往存在问题。需要大量的运行在数以千计的服务器上的并行软件 需要新的处理方式才能支持决策制定 价值发现和过程优化

2001年首次提出大数据概念, 2012年 gartner把大数据定义为: high volume(amount of data) high velocity(speed of data in and out)
(and/or high variety( range of data tyeps and sources )

大数据 代表了信息集合(具有3v特征、需要特定技术和分析方法才能把它转换为价值)

** 历史
当初,HPCC和Quantcast File System 是仅有的可以处理exabytes数据的公共可用平台(分布式文件共享框架( 用于数据存储和查询) ) google基于HPCC推出了MapReduce框架:
MapReduce框架提供了一种处理海量数据的并行处理模型,以及配套的实现。在MapReduce框架中,查询被分割并分部到不同的并行节点,并且并行地执行(Map),
查询结果被收集并分发(Reduce)。Hadoop是MapReduce框架的一种开源实现。(hadoop mapReduce. google的mapReduce在BigMap上进行,hadoop mapReduce在Hbase上进行)

** 与HPC 云计算的关系
大数据 是 BigData的翻译, 其实就是 对海量数据的数据挖掘,数据分析。 对于以前的科研学术界,都是使用HPC技术,现在工业界倾向于使用“云计算”。

** 具体问题一例
5 用你最熟悉的大数据挖掘工具,简述大数据挖掘的主要过程

* 7. Hodoop

在安装hadoop时,需要在多个节点上,重复部署hadoop的步骤 。

** hadoop之上的查询分析工具
*** hive
Hive是一种基于hadoop的数据仓库工具,它提供了一种查询hadoop数据库的方式。hive的查询语言hql跟sql查询非常类似。

**** Hive问题
a.txt b.txt 100万行(ip,username) 比如 127.0.0.1 zhangsan
解决一下问题: 两个文本中ip地址个数(去重);a.txt中各个user的ip数。
简述关键过程,并写出关键代码

CREATE TABLE a FROM a.txt
CREATE TABLE b FROM b.txt

SELECT DISTINCT ip FORM a

*** pig
pig学习曲线陡峭,与传统sql查询不太一样。pig也是与hive类似的查询工具。

*** Impala(黑斑羚)
cloudera公司,与Hive类似。

*** Mahout(机器学习、数据挖掘的库)

** HDFS
*** HDFS 架构,以及HDFS的读写过程

one NameNode and multiple dataNode

** YARN
用来取代旧版本hadoop中的MapReduce。
*** 架构arch

RM(ResourceManager) AM(ApplicationManager) NM(NodeManager)

通常RM节点只有一个,NM节点有多个。

* 8. Spark
** Spark和MapReduce的区别
Spark从层次上来说,跟hodoop更为类似,都是一种大数据平台或框架。
MapReduce是hadoop框架中的一部分,是一种计算框架。

MapReduce是Hodoop的计算模型。而Spark中的计算模型是DAG(有向无环图图)

Hadoop更适合做批处理,而Spark更适合需要反复迭代型的机器学习

Spark既可以在内存中运行,也可以在硬盘上运行。

Spark比Hadoop快很多,官方宣称快100倍(如果都是运行在磁盘上,则快10倍)

Spark提供 :Spark SQL MLlib

Hadoop and Spark are both Big Data frameworks
–they provide some of the most popular tools used to carry out common Big Data-related tasks.

hey are not mutually exclusive, as they are able to work together.

spark does not provide its own distributed storage system. For this reason
many Big Data projects involve installing Spark on top of Hadoop, where Spark’s advanced
analytics applications can make use of data stored using the Hadoop Distributed File System (HDFS).

时间: 2024-08-06 20:08:27

我对大数据相关技术的学习心得及理解的相关文章

【科普】#001 大数据相关技术技术

由于不是大数据的开发人员,因此对大数据的知识,也就只是需要简单的理解,大数据有什么技术,都有什么用,这样就够了 大数据我们都知道hadoop,可是还会各种各样的技术进入我们的视野:Spark,Storm,impala,让我们都反映不过来.为了能够更好的架构大数据项目,这里整理一下,供技术人员,项目经理,架构师选择合适的技术,了解大数据各种技术之间的关系,选择合适的语言. 我们可以带着下面问题来阅读本文章: 1.hadoop都包含什么技术2.Cloudera公司与hadoop的关系是什么,都有什么

Hadoop生态系统简介及大数据相关技术

1.Hadoop 是一个能够对大量数据进行分布式处理的软件框架.具有可靠.高效.可伸缩的特点.Hadoop的核心是HDFS和Mapreduce,hadoop2.0还包括YARN. 2.HDFS Hadoop的分布式文件系统.是Hadoop体系中数据存储管理的基础.它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行.HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序. 3.MapReduce(分布式计算框架) M

什么是大数据?如何成为大数据的技术大牛?

其实大数据并不是一种概念,而是一种方法论.简单来说,就是通过分析和挖掘全量的非抽样的数据辅助决策.大数据可以实现的应用可以概括为两个方向,一个是精准化定制,第二个是预测.比如像通过搜索引擎搜索同样的内容,每个人的结果却是大不相同的.再比如精准营销.百度的推广.淘宝的喜欢推荐,或者你到了一个地方,自动给你推荐周边的消费设施等等. 目前市场对大数据相关人才的需求与日俱增,岗位的增多,也导致了大数据相关人才出现了供不应求的状况,从而引发了一波大数据学习的浪潮.大家可以先了解一下关于大数据相关的岗位分类

了解大数据开发及和大数据相关的技术

在现如今,随着互联网技术飞速的发展,目前有不少朋友询问关于大数据方面的问题,比如什么是大数据开发啊,和大数据相关的技术是什么呢等问题,我们今天就浅谈一下大数据开发及和大数据相关的技术的问题. 浅谈大数据开发及和大数据相关的技术 大数据学习QQ群:716581014 首先,大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信息资产. 那么和大数据相关的技术有哪些?

Java大数据的技术学习路线图

大数据不是某个专业或一门编程语言,实际上它是一系列技术的组合运用. 有人通过下方的等式给出了大数据的定义. 大数据 = 编程技巧 + 数据结构和算法 + 分析能力 + 数据库技能 + 数学 + 机器学习 + NLP + OS + 密码学 + 并行编程 虽然这个等式看起来很长,需要学习的东西很多,但付出和汇报是成正比的,至少和薪资是成正比的. 既然要学的知识很多,那么一个正确的学习顺序就非常关键了. 专业的学习路径,主要包含 7个模块:入门知识 → Java 基础 → Scala 基础 → Had

大数据开发及和大数据相关的技术

在现如今,随着互联网技术飞速的发展,目前有不少朋友询问关于大数据方面的问题,比如什么是大数据开发啊,和大数据相关的技术是什么呢等问题,我们今天就浅谈一下大数据开发及和大数据相关的技术的问题. 首先,大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信息资产. 那么和大数据相关的技术有哪些? 1.云技术 大数据常和云计算联系到一起,因为实时的大型数据集分析需要分布式

中国大数据六大技术变迁记(CSDN)

大会召开前期,特别梳理了历届大会亮点以记录中国大数据技术领域发展历程,并立足当下生态圈现状对即将召开的BDTC 2014进行展望: 追本溯源,悉大数据六大技术变迁 伴随着大数据技术大会的发展,我们亲历了中国大数据技术与应用时代的到来,也见证了整个大数据生态圈技术的发展与衍变: 1. 计算资源的分布化——从网格计算到云计算. 回顾历届BDTC大会,我们不难发现,自2009年,资源的组织和调度方式已逐渐从跨域分布的网格计算向本地分布的云计算转变.而时至今日,云计算已成为大数据资源保障的不二平台. 2

拉勾网大数据相关岗位数据爬虫分析

拉勾网大数据相关招聘数据分析 观察对象:大数据相关岗位的招聘数据 观察时间:2016.3.28 数据来源:拉勾网 1.分析目的 目前,大数据是一个非常热门的话题,受到很多人的关注和追捧,其创造的相关职业也受到大家的青睐.但大数据相关职业究竟是什么样,有怎么样的要求,有怎样的待遇还不为多数人所知,为了更好的了解大数据相关职业要求及其福利待遇进行本次数据分析. 2.数据采集 1 数据来源:拉勾网,拉勾网是专业的互联网招聘平台,专注互联网职业机会,其数据具有代表性: 2 数据类型:json类型数据:

关于大数据相关的问答汇总,持续更新中~

NO.1 想要学好大数据需掌握哪些技术? 答:1,Java编程技术 Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,因此,想学好大数据,掌握Java基础是必不可少的! 2.Linux命令 对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制,因此,想从事大数据开发相关工作,还需