云计算与分布式计算区别
分布式计算是指在一个松散或严格约束条件下使用一个硬件和软件系统处理任务,这个系统包含多个处理器单元或存储单元、多个并发的过程、多个程序。一个程序被分成多个部分,同时在通过网络连接起来的计算机上运行。分布式计算类似于并行计算, 但并行计算通常用于指一个程序的多个部分同时运行于某台计算机上的多个处理器上。所以,分布式计算通常必须处理异构环境、多样化的网络连接、不可预知的网络或计算机错误。很显然,云计算属于分布式计算的范畴,是以提供对外服务为导向的分布式计算形式。云计算把应用和系统建立在大规模的廉价服务器集群之上,通过基础设施与上层应用程序的协同构建以达到最大效率利用硬件资源的目的以及通过软件的方法容忍多个节点的错误,达到了分布式计算系统可扩展性和可靠性两个方面的目标。
【小马:一个是通过网络连接起来的机器,一个是服务集群】
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
es侧重搜索引擎,hadoop侧重数据分析。两者都能存储海量数据,亿级百亿级不是问题。
更上层应用,如:数据挖掘,机器学习,发现、预测分析等都必须基于大规模的数据,没有足够的数据一切扯淡,数据量足够大,就必须分布式存储,依赖大规模的廉价PC构建hadoop集群是非常有必要的。
HADOOP 和 HIVE
为了满足数据处理的巨大需求,基于 Java 的工具群涌而现。 作为基于 Java 的框架,Hadoop 在批处理领域成为热点。Hadoop 比其他处理工具速度要慢,但是它非常精确且被广泛的应用于后台分析,它很好的融合了 Hive, 一个运行在 Hadoop 上的基于查询的框架。
大数据
IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 具有4个V的特点。
数据挖掘
理论上不限制编程语言,只要能实现数据抓取和分析就可以,用Excel人工能分析也可以,不过确实有一些语言特别适合数据分析、数据挖掘。主要是语言的设计和社区生态决定的。
Python:Python 语言广受数据分析、数据挖掘和机器学习领域的喜爱,在数据分析领域有比较著名的库有 Numpy,Scipy,Pandas 等,绘图库非常丰富,还有像 JupyterNotebook 这样为数据分析量身定做的笔记本工具。
R:一款非常强大的统计分析语言,自带了非常丰富的统计和绘图库,是商业统计工具 S 的开源替代产品,在学术领域非常受欢迎,同时 JupyterNotebook 也支持 R。
Java:Java 应用范围非常广,因为大数据领域的大多数系统(例如 Hadoop)都是基于 Java 开发的,所以用 Java 来进行大数据的分析也是最常见的。Java 在大型工程化应用中使用广泛,但是缺点是不能交互式分析。
Scala:Scala 是基于 Java 语言的动态脚本语言,在大数据领域也有广泛的使用(例如 Spark,Flink),可以和 Java 无缝集成,同时提供了非常灵活的动态特性和交互式编程方式。
Julia:这是专门为高性能科学计算设计的动态语言,对数据分析、可视化、机器学习领域的支持非常好,而且据说性能非常高。但是出来时间比较短,我自己也没有尝试过。
常见的Python数据分析库
Pandas
Pandas是一个开放源码的Python库,它使用强大的数据结构提供高性能的数据操作和分析工具。它的名字:Pandas是从Panel Data - 多维数据的计量经济学(an Econometrics from Multidimensional data)。
在Pandas之前,Python主要用于数据迁移和准备。它对数据分析的贡献更小。 Pandas解决了这个问题。使用Pandas可以完成数据处理和分析的五个典型步骤,而不管数据的来源 - 加载,准备,操作,模型和分析。Python Pandas用于广泛的领域,包括金融,经济,统计,分析等学术和商业领域。
总的来说,Pandas比较适合用作数据的预处理和数据结构的处理。
NumPy
NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。
NumPy的主要功能:
快速高效的多维数组对象ndarray
用于对数组执行元素级计算以及直接对数组执行数学运算的函数
用于读写硬盘上基于数组的数据集的工具
线性代数运算、傅里叶变换,以及随机数生成
用于将C、C++、Fortran代码集成到python的工具
与线性代数有关的操作;
NumPy 拥有线性代数和随机数生成的内置函数;
总的来说,NumPy适合用于科学计算和机器学习等大型计算工程,甚至成了MatLab的优秀替代者。
SciPy
SciPy是一个开放源码的BSD许可的数学,科学和工程库。 SciPy库依赖于NumPy,它提供了便捷且快速的N维数组操作。构建SciPy库的主要原因是,它能与NumPy数组一起工作,并提供了许多用户友好和高效的数字实践,例如:数值积分和优化的例程。
Matplotlib
Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台交互式环境的出版物质量数据。Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。
Matplotlib主要用于数据分析最后的数据可视化。当然目前有很Matplotlib的替代者,比如Pychart、echarts。
网友评论