带你学习有用的知识

注册/登录|最近发布|今日推荐

主页 日常百科校园生活教育科学
当前位置:首页 > 百科

大数据开发常用算法(浅谈大数据开发初学路线)

发布时间:2023-06-20 06:12责任编辑:秦小芳关键词:初学,数据

本文主要是对大数据开发的介绍,并着重对大数据开发的算法操作进行详细描述。

大数据大数据是指在一定时间范围内,常规软件工具无法捕捉、管理和处理的数据的集合。它是一种海量、高增长、多元化的信息资产,需要一种新的处理模式来拥有更强的决策力、洞察力和发现力以及流程优化能力。[1]

在Victor Mayer-schoenberg和Kenneth Kukeye编的《大数据时代》 [2]中,大数据是指所有的数据都用于分析和处理,而不是随机分析(抽样调查)的捷径。大数据的5V特征(IBM提出):体量(大数量)、速度(高速度)、多样性(多样性)、价值(低价值密度)、准确性(真实性)。

大数据是指能够传统软件工具在一定时间内无法捕捉、管理和处理。它是一种海量、高增长、多元化的信息资产,需要一种新的处理模式来拥有更强的决策力、洞察和发现能力以及流程优化能力。[1]

在Victor Mayer-schoenberg和Kenneth Kukeye编的《大数据时代》 [2]中,大数据是指所有的数据都用于分析和处理,而不是随机分析(抽样调查)的捷径。大数据的5V特征(IBM提出):体量(大数量)、速度(高速度)、多样性(多样性)、价值(低价值密度)、准确性(真实性)。

Gartner,一家研究机构大数据,给出了这个定义。"大数据是一种需要新的处理模式来拥有更强的决策、洞察和流程优化能力,以适应海量、高增长率和多样化的信息资产。[1]

麦肯锡全球研究所给出的定义是:一个数据集合,其规模之大,在获取、存储、管理和分析等方面大大超过了传统数据库软件工具的能力。具有数据规模海量、数据流转迅速、数据类型多样、价值密度低四大特点。[4]

大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些有意义的数据进行专业的处理。换句话说,如果把大数据比作一个行业,这个行业盈利的关键在于提高处理能力并实现增值通过正在处理。[5]

从技术上讲,大数据和云计算的关系就像硬币的正反面一样密不可分。大数据可以不能由单台计算机处理,因此必须采用分布式体系结构。其特点在于海量数据的分布式数据挖掘。但它必须依赖云计算分布式处理、分布式数据库、云存储和虚拟化技术。[2]

随着云时代的到来,大数据受到越来越多的关注。分析师认为,大数据通常用于描述一家公司创建的大量非结构化数据和半结构化数据,这些数据在下载到关系数据库进行分析时会花费太多的时间和金钱。大数据分析往往与云计算联系在一起,因为大数据集的实时分析需要MapReduce这样的框架将作业分配到数百甚至数千台计算机上十、。

大数据需要特殊的技术来有效处理大量可以容忍时间流逝的数据。适用于大数据的技术,包括大规模并行处理(MPP)数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展存储系统。

的最小基本单位是比特,所有单位按顺序给出:比特、字节、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。

它们是按照1024(2的十次方)的进度率计算的:

1字节=8位

1 KB=1,024字节=8192位

1 MB=1,024 KB=1,048,576字节

1 GB=1,024 MB=1,048,576 KB

1 TB=1,024 GB=1,048,576 MB

1 PB=1,024 TB=1,048,576 GB

1 EB=1,024 PB=1,048,576 TB

1 ZB=1,024 EB=1,048,576 PB

1 YB=1024 ZB=1048576 EB

1 BB=1024 YB=1048576 ZB

1nb=1024 BB=1048576 YB

1db=1024 NB=1048576 BB

全名:

1位=二进制数字

8位=1字节

1,000字节=1千字节

1000千字节=1兆字节

1000兆字节=1千兆字节

1,000千兆字节=

1000太字节=1pb

1,000 Pb=1 EB

1,000艾字节=1吉字节

1000吉字节=1吉字节

1,000兆字节=1兆字节

1,000兆字节=1兆字节

特性

体积:数据的大小决定了所考虑数据的价值和潜在信息;[6]

多样性:数据类型的多样性;[6]

速度:指获取数据的速度;[6]

可变性:它阻碍了处理和有效管理数据的过程。[6]

真实性:数据的质量[6]

复杂性:数据量巨大,来源多样[6]

价值:合理利用大数据,以低成本创造高价值。

奥地利大数据发展常用算法(RISC)Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多是计算机科学家。他让这些科学家投票选出最重要的算法。以下是这次调查的结果,按英文名字的字母顺序排列。

1、A*搜索算法3354图搜索算法,计算从给定起点到给定终点的路径。在该方法中,使用启发式估计来估计通过每个节点的最佳路径,并为每个位置安排订单。该算法以获得的顺序访问这些节点。因此,A*搜索算法是最佳优先搜索的一个例子。

2、聚类搜索(也称为波束搜索)——最佳优先级搜索算法的优化。使用启发式函数来评估它检查的每个节点的能力。但簇搜索只能找到每个深度的前M个最合格的节点,M是定数——簇的宽度。

3、二分搜索法)——在线性数组中寻找特定值的算法。每一步都会删除一半不符合要求的数据。

4、分支定界算法(3354)在各种优化问题中寻找特定优化解的算法,尤其适用于离散和组合优化。

5、Buchberger算法3354一种数学算法,可以看作是求单个变量的最大公约数的欧几里得算法和线性系统中高斯消去法的推广。

6、数据压缩——采用特定的编码方案,使用较少的字节(或其他信息承载单位)对信息进行编码的过程,也称为信源编码。

7、Diffie-Hellman密钥交换算法3354一种加密协议,允许双方在不事先了解对方的情况下,在不安全的通信信道中共同建立共享密钥。该密钥可与对称密码一起用于加密后续通信。

8、Dijkstra算法3354对于没有负权边的有向图,计算单起点最短算法。

9、离散微分算法。

10、动态规划)——算法(3354)显示覆盖子问题和最优子架构算法。

11、欧几里德算法)——计算两个整数的最大公约数。最古老的算法之一出现在欧几里德公元前300年前的s 《几何原本》。

12、期望最大化算法(又称EM-training) 3354在统计计算中,期望最大化算法在概率模型中寻找最可能的参数估计,其中模型依赖于未被发现的潜在变量。EM分两步交替计算。第一步,计算期望,利用隐变量的现有估计值,计算其最大可能估计值;第二步是最大化第一步中获得的最大可能值,以计算参数值。

13、快速傅立叶变换(FFT)——计算离散傅立叶变换(DFT)及其逆变换。该算法应用广泛,从数字信号处理到求解偏微分方程,再到大整数乘积的快速计算。

14、梯度下降)——一种数学优化算法。

15、哈希算法(哈希)。

16、堆。

17、Karatsuba乘法3354用于需要完成数千整数乘法运算的系统,如计算机代数系统、大数库等。如果用长乘法,速度太慢。这个算法是1962年发现的。

18、 ll算法(lenstra-lovaszlattice reduction)3354以格基数为输入,输出短正交向量基数。l算法广泛应用于以下公钥加密方法:背包加密系统,特定设置的RSA加密等等。

19、最大流量算法3354该算法试图从交通网络中找到最大流量。优势的定义是找到这样一个流的价值。最大流问题可以看作是更复杂的网络流问题的一个特例。最大流与网络中的接口有关,这就是最大流最小割定理。福特-富尔克森可以找到一个流量网络中的最大流量。

20.合并排序。

21、牛顿法)——)求非线性方程(组)零点的重要迭代法。

22、Q-learning学习算法3354这是一种通过学习动作值函数完成的强化学习算法。该函数在给定的状态下采取给定的动作,计算期望的效用值,然后遵循固定的策略。Q-learning的优点是它可以在没有环境模型的情况下比较可采取行动的预期效用。

23、二次筛)——现代整数因式分解算法,实际上是已知的第二快的这类算法(仅次于数域筛)。对于110位以下的十位整数,还是最快的,大家都觉得比数域筛选法简单。

24、 RANSAC 3354是随机抽样共识。该算法根据一系列包含异常值的观测数据来估计数学模型的参数值。基本假设是数据中包含非异化值,即可以用某些模型参数解释的值,异化值是那些不符合模型的数据点。

25、 RSA 3354公钥加密算法。第一个适合签名加密的算法。RSA在电商行业仍被大规模使用,人们相信它拥有足够安全长度的公钥。

26、 Schnhage-Strassen算法3354在数学上,Schnhage-Strassen算法是一种用于完成大整数乘法的快速渐近算法。算法复杂度为O(N log(N) log(log(N)),算法采用傅立叶变换。

27、单纯形算法)——在数学的最优化理论中,单纯形算法是求线性规划问题数值解的常用技术。线性规划问题包括一系列关于一组实变量的线性不等式和一个要最大化(或最小化)的固定线性函数。

28、奇异值分解(SVD)——在线性代数中,SVD是实矩阵或复矩阵的重要分解方法,在信号处理和统计中有很多应用,如计算矩阵的伪逆矩阵(求解最小二乘问题)、求解超定线性系统、矩阵逼近、数值天气等。

29、解线性方程组3354线性方程组是数学中最古老的问题。它们有许多应用,例如数字信号处理中的估计和预测、线性规划、数值分析中非线性问题的近似等等。为了解线性方程,可以使用高斯-乔丹消去法或乔莱斯基分解。

30.Strukturtensor算法3354应用于模式识别领域。找出一个所有像素的计算方法,看像素是否在同质区域,看是属于边缘还是顶点。

31、 Union-find算法(3354)给定一组元素,该算法通常用于将这些元素分成多个彼此不重合的独立组。不相交集的数据结构可以跟踪这种分割方法。合并算法可以在这个数据结构上完成两个有用的操作:

查找:确定特定元素属于哪个组。

合并:将两个组合并成一个组。

32、维特比算法)——一种动态规划算法,寻找最可能的隐藏状态序列。这个序列称为维特比路径,其结果是一系列可观测的事件,尤其是在隐马尔可夫模型中。

大数据开发初学者学习路线1.1学习百度和谷歌

不管遇到什么问题,先尝试搜索,自己解决。

谷歌是首选。如果可以不用翻,用百度就行。

1.2参考资料首选官方文件。

尤其是入门,公文永远是首选。

我相信从事这个领域的大部分都是有文化的人,只能用英语凑合。如果他们真的可以受不了,请参考第一步。

1.3让Hadoop先运行。

Hadoop可以算是大数据存储和计算的鼻祖。现在大部分开源的大数据框架都依赖Hadoop或者与之很好的兼容。

关于Hadoop,您至少需要弄清楚以下几点:

Hadoop 1.0、Hadoop 2.0

MapReduce

NameNode、DataNode

工作跟踪者、任务跟踪者

Yarn、资源管理器、节点管理器

自己搭建Hadoop,请使用第一步和第二步,只要你能让它运行。

建议先用安装包的命令行安装,不要用管理工具。

另外:Hadoop1.0只需要了解一下,现在都用Hadoop 2.0了。

1.4试试Hadoop。

HDFS目录操作命令;

上传和下载文件命令;

运行MapReduce示例程序;

打开Hadoop WEB界面,查看作业运行状态和作业运行日志。

知道Hadoop 的系统日志是。

1.5 It 是时候让你了解他们的原则了。

MapReduce:如何分而治之;

HDFS:数据到底在哪里,什么是副本;

什么是纱线,它能做什么;

NameNode到底在做什么;

ResourceManager正在做什么;

1.6自己写一个MapReduce程序。

请以WordCount为例,自己写一个WordCount程序(复制)。

打包提交给Hadoop运行。

你不不懂Java?Shell和Python都可以。有个东西叫Hadoop Streaming。

如果你认真完成了以上步骤,那么恭喜你,你的一只脚已经进来了。

第2章:更有效的字数统计

2.1学点SQL。

你知道数据库吗?你会写SQL吗?

如果没有,请学习一些SQL。

WordCount的2.2 SQL版本

在1.6中,你写(或复制)了多少行代码WordCount?

让我给你看看我的:

选择单词,从wordcount中按单词分组计数(1);

这就是SQL的魅力。编程需要几十行甚至上百行代码,我这句话就能搞定;在Hadoop上使用SQL处理和分析数据方便、高效、易用,是一种趋势。无论是离线计算还是实时计算,越来越多的大数据处理框架都在积极提供SQL接口。

2.3 Hadoop上的SQL配置单元

什么是Hive?官方的解释是:

Apache Hive数据仓库软件有助于读取、写入和管理驻留在分布式存储中并使用SQL语法查询的大型数据集。

为什么Hive是数据仓库工具而不是数据库工具?有些朋友可能不知道数据仓库,这是一个逻辑概念,底层用的是数据库。数据仓库中的数据有这两个特点:历史数据最全(海量)且相对稳定;所谓相对稳定,是指数据仓库不同于业务系统数据库,数据会频繁更新。数据一旦进入数据仓库,很少会被更新和删除,只会被大量查询。Hive也有这两个特点。所以Hive适合做海量数据的数据仓库工具,而不是数据库工具。

2.4安装和配置配置单元

请参考1.1和1.2完成Hive的安装和配置。可以正常输入Hive命令行。

2.5尝试使用Hive

请参考1.1和1.2,在Hive中创建wordcount表,运行2.2中的SQL语句。

找到刚刚在Hadoop WEB界面运行的SQL任务。

看看SQL查询结果和1.4中MapReduce的结果是否一致。

2.6 Hive Hive有用吗?

它很明显是用SQL写的。为什么在Hadoop WEB界面会看到MapReduce任务?

2.7学习Hive的基本命令

创建和删除表;

将数据加载到表中;

下载Hive表的数据;

请参考1.2了解更多关于Hive 的语法和命令。

如果你已经仔细完整地按照《写给大数据开发初学者的话》的第1章和第2章中的程序操作,那么你应该已经具备了以下技能和知识点:

0和Hadoop2.0

MapReduce的原理(还是经典题目,一个10G大小的文件,给定1G内存的大小,如何用Java程序统计前10个单词和次数);

读写数据的HDFS过程;把数据输入HDFS;从HDFS下载数据;

我可以自己写一个简单的MapReduce程序,运行中出现问题的时候知道去哪里查日志;

编写SELECT、WHERE、GROUP BY等简单的SQL语句;

Hive SQL转换成MapReduce的一般过程;

Hive中常见的语句:创建表、删除表、将数据加载到表中、分区、将表中的数据下载到本地;

通过以上学习,你了解到HDFS是Hadoop提供的分布式存储框架,可以用来存储海量数据。MapReduce是Hadoop提供的分布式计算框架,在HDFS上可以用来统计和分析海量数据,而Hive是Hadoop上的SQL。Hive提供SQL接口,开发者只需要编写简单易用的SQL语句。Hive负责将SQL翻译成MapReduce并提交运行。

此时,你的大数据平台看起来像这样:

所以问题是,海量数据是如何到达HDFS的?

第三章:在Hadoop上从其他地方获取数据。

这里也可以叫数据采集,在Hadoop上采集各种数据源的数据。

3.1 HDFS放命令

你以前应该用过这个。

put命令在实际环境中也很常用,通常与shell和python等脚本语言结合使用。

建议精通。

3.2 HDFS空气污染指数

HDFS提供写数据的API,用编程语言自己将数据写入HDFS。put命令本身也使用API。

在实际环境中,很少有人自己编写程序使用API向HDFS写数据,而API通常是被其他框架封装的。比如:Hive中的INSERT语句,Spark中的saveAsTextfile等。

了解建议的原理并能写Demo。

3.3 Sqoop

Sqoop是一个关系数据库,主要用于Hadoop/Hive和传统数据库。

Oracle/MySQL/SQLServer等之间数据交换的开源框架。

就像Hive把SQL翻译成MapReduce一样,Sqoop把你指定的参数翻译成MapReduce,提交给Hadoop运行,从而完成Hadoop与其他数据库的数据交换。

自己下载配置Sqoop(建议先用Sqoop1,不过Sqoop2比较复杂)。

了解Sqoop常用的配置参数和方法。

使用Sqoop将数据从MySQL同步到HDFS;

使用Sqoop将MySQL中的数据同步到Hive表中;

PS:如果在后续选型中确定使用Sqoop作为数据交换工具,建议熟练掌握;否则,知道并使用Demo就足够了。

3.4水槽

Flume是一个分布式海量日志收集和传输框架。因为收集和传输框架,不适合关系数据库的数据采集和传输。

Flume可以实时收集网络协议、消息系统和文件系统的日志,并将它们传输到HDFS。

所以,如果你的业务有来自这些数据源的数据,需要实时采集,你应该考虑使用Flume。

并下载和配置Flume。

使用Flume监控一个不断追加数据的文件,并将数据传输到HDFS;

PS:水槽的配置和使用比较复杂。如果你不如果你没有足够的兴趣和耐心,你可以先跳过水槽。

3.5阿里开源数据x

之所以介绍这个,是因为我们公司目前使用的Hadoop与关系数据库进行数据交换的工具是之前基于DataX开发的,非常好用。

请参考我的博文《异构数据源海量数据交换工具-Taobao DataX 下载和使用》。

现在DataX是3.0版,支持很多数据源。

还可以在上面做二次开发。

PS:有兴趣的可以研究使用一下,和Sqoop对比一下。

如果你已经认真完成了以上的学习和练习,此时,你的大数据平台应该是这样的:

第4章:把Hadoop上的数据拿到别处。

在上一节中,我们介绍了如何在Hadoop上从数据源收集数据。在Hadoop上收集完数据后,我们可以使用Hive和MapReduce进行分析。那么接下来的问题就是,如何将来自Hadoop的分析结果同步到其他系统和应用?

其实这里的方法和第三章基本相同。

4.1 HDFS得到命令

在本地找到HDFS的档案。需要精通。

4.2 HDFS空气污染指数

同3.2。

4.3 Sqoop

同3.3。

使用Sqoop将HDFS上的文件同步到MySQL;

使用Sqoop将Hive表中的数据同步到MySQL;

4.4数据x

同3.5。

如果你已经认真完成了以上的学习和练习,此时,你的大数据平台应该是这样的:

如果你已经仔细完整地按照《写给大数据开发初学者的话2》的第3章和第4章中的程序操作,那么你应该已经具备了以下技能和知识点:

知道如何收集HDFS现有数据,包括线下和实时收集;

你已经知道sqoop(或DataX)是HDFS和其他数据源之间的数据交换工具;

您已经知道flume可以用作实时日志收集。

通过之前的学习,你已经掌握了很多关于大数据平台的知识和技能。搭建一个Hadoop集群,在Hadoop上收集数据,使用Hive和MapReduce对数据进行分析,并将分析结果同步到其他数据源。

下一个问题来了。Hive用的越来越多,你会发现很多不愉快的地方,尤其是速度慢。在大多数情况下,当我的数据非常小时,它必须申请资源并启动MapReduce来执行它。

第5章:快点,我的SQL

其实大家都发现了,Hive后台用MapReduce做执行引擎,有点慢。

所以Hadoop上的SQL的框架越来越多。据我所知,最常用的框架按流行程度排序是SparkSQL、Impala和Presto。

这三个框架都是基于半内存或者全内存,提供SQL接口在Hadoop上快速查询分析数据。三者的比较请参考1.1。

目前我们用的是SparkSQL。至于我们为什么使用SparkSQL,大概有以下几个原因:

我还和斯帕克和唐一起做过其他事情。我不想引入太多的框架;

Impala需要的内存太大,没有太多资源可以部署;

5.1关于Spark和SparkSQL

什么是Spark,什么是SparkSQL。

Spark的一些核心概念和名词解释。

SparkSQL和Spark是什么关系?SparkSQL和Hive是什么关系?

为什么SparkSQL运行速度比Hive快?

5.2如何部署和运行SparkSQL

Spark有哪些部署模式?

如何在Yarn上运行SparkSQL?

使用SparkSQL查询Hive中的表。

PS: Spark不是短时间能掌握的技术。所以建议了解Spark后,可以先从SparkSQL入手,循序渐进。

对于Spark和SparkSQL,请参考

http://lxw1234.com/archives/category/spark

如果你已经认真完成了以上的学习和练习,此时,你的大数据平台应该是这样的:

第6章:一夫多妻

请不要不要被这个名字所诱惑。其实我想说的是,数据采集一次,消费多次。

在实际的业务场景中,尤其是一些监控日志,如果想马上从日志中知道一些指标,从HDFS分析太慢了(关于实时计算,后面章节会介绍)。虽然它是通过水槽收集,水槽可以不要在HDFS上短时间滚动文件,这会产生大量的小文件。

为了满足数据收集和多次消费的需求,卡夫卡就是我们这里要说的。

6.1关于卡夫卡

卡夫卡是什么?

卡夫卡的核心概念和名词解释。

6.2如何部署和使用Kafka

在单台机器上部署Kafka,并成功运行自己的生产者和消费者示例。

使用Java程序编写和运行生产者和消费者程序。

Flume和Kafka的集成使用Flume来监控日志,并将日志数据实时发送给Kafka。

如果你已经认真完成了以上的学习和练习,此时,你的大数据平台应该是这样的:

这时,Flume收集的资料并不直接去找HDFS,而是先去找卡夫卡。Kafka中的数据可以被多个消费者同时消费,其中之一就是将数据同步到HDFS。

如果你已经仔细完整地按照《写给大数据开发初学者的话3》的第5章和第6章中的程序操作,那么你应该已经具备了以下技能和知识点:

为什么Spark比MapReduce快?

用SparkSQL代替Hive运行SQL更快。

用Kafka完成一次数据采集,多次消耗结构。

可以自己写程序完成卡夫卡的生产者和消费者。

通过前面的学习,你已经掌握了数据采集、数据存储和计算、数据交换等大部分技能。在大数据平台中,每一步都需要一个任务(程序)来完成,并且任务之间存在一定的依赖关系。例如,数据计算任务可以在数据采集任务成功完成之前,不要开始运行。如果一个任务执行失败,需要向开发和运行人员发送报警,同时提供完整的日志,方便查错。

结论是it对于大数据开发的介绍。如有不足之处,请指正。

相关阅读推荐:一篇文章告诉你工厂如何利用大数据。

相关阅读推荐:大数据时代信息保护面临挑战

知识推荐

高优知识网——分享有用的生活百科,一起学习优秀的知识。 垃圾信息处理邮箱 tousu446@163.com 网站地图
icp备案号 闽ICP备2023005118号-3 互联网安全管理备案 不良信息举报平台 Copyright 2023 www.gaoyou91.com All Rights Reserved