已经看了大数据相关知识一阵时间了,自己也是从新手开始的,所以看了大量的大数据如何入门的技术博客、帖子等,下面记录总结下自己学习的内容。
在学习大数据前,需要对云计算、虚拟化、Linux、JAVA这几个方面都需要了解,下面简单阐述下这几个方面的概念。
所谓的云计算,指的就是把你的软件和服务统一部署在数据中心,统一管理,从而实现高伸缩性。
大数据深入的学习,则需要搭建环境,而最方便的方式是使用虚拟机,因此对虚拟化我们也需要进行了解。
为什么虚拟化会如此的流行。运行虚拟机本身也是占内存的,为什么就能提高硬件资源利用率那
提高计算机硬件性能利用率多半是对服务器而言:企业级服务器因为所装的应用对操作系统和应用环境有要求,所以很多应用不能同时装在同一个系统和环境下,导致服务器正常工作时只使用30%左右的硬件资源,剩余的70%都是闲置的,但是在虚拟机下,可以把一台服务器的硬件虚拟成N个,每个的性能是1/n,而且虚拟出来的硬件之间是相互逻辑独立的,不会有影响。这样我们就可以在一台服务器上虚拟出n个相同的计算机,安装N个不同操作系统不同应用,把服务器硬件资源利用起来。
其实虚拟化简单说就是在硬件设施上通过装虚拟机软件模拟出多个操作系统,虚拟机软件常用的有VMware、VirtualPC等。
在大数据学习中,搭建集群是关键,因此虚拟化方面我们更关心的是网络的配置。VMware提供的功能较VirtualPC要更丰富,使用起来更简便,因此在学习中最好选择VMware进行学习。
VMware中的网络配置方式有三种,分别是:
"如果你想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。"
-* host-only(主机模式)*:是与主机隔离的,但是虚拟机之间是可以相互通信,相当于这两台机器通过双绞线互连。
在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
在此模式下,虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的。
"如果你想利用VMWare创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择host-only模式。"
"如果你想无需做什么操作,安装系统后就可上网,那么可以选择NAT模式。"
大数据相关技术还是部署在Linux操作系统上的,因此对于Linux的学习也是十分必要的。首先我们应该熟悉Linux中的常用命令的使用,以及软件的安装、文档的编辑等。下面简单列举一下常用的操作。
//调出控制台
ctrl+alt+T(键盘键组合)
//切换root用户
su root
//解压tar包
tar -zvxf hadoop.tar.gz
//安装软件
sudo apt-get intall kwrite
//编辑文件
vi /home/zhl/abc.txt
//按i键进入编辑模式,按ESC键进入命令行模式
//命令行模式下
//直接退出
:q
//保存退出
:wq
//强制退出
:q!
hadoop是JAVA编写的框架,所以深入学习的话,拥有JAVA基础是必须的。
初学者基本的要求:
(1)懂什么是对象、接口、继续、多态
(2)必须熟悉Java语法
(3)掌握一定的常用包
(4)会使用maven下载代码
(5)会使用eclipse,包括里面的快捷键,如何打开项目传统程序员,因为具有丰富的编程经验,因此只要能够掌握开发工具:
(1)会使用maven下载代码
(2)会使用eclipse,包括里面的快捷键,如何打开项目
(3)简单熟悉Java语法上面的只是基础,如果想开发hadoop,还需要懂得下面内容 :
(1)会编译hadoop
(2)会使用hadoop-eclipse-plugin插件,远程连接集群
(3)会运行hadoop程序。
大数据是一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。
【IBM提出的大数据的5V特征是:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)Veracity(真实性)】
大数据通常用来形容一个公司创造的大量非结构化数据和半结构化数据。大数据分析常和云计算联系到一起,因为实时的大型数据集分析需要像MapReduce一样的框架来向数十、数百或甚至数千的电脑分配工作。
大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理(MPP)数据库、数据挖掘电网、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
大数据在以云计算为代表的技术创新大幕的衬托下,将原本很难收集和使用的数据变得容易被利用起来了。
全面认知大数据,可以从从三个层面来展开:
第一层面是理论,理论是认知的必经途径,也是被广泛认同和传播的基线。在这里从大数据的特征定义理解行业对大数据的整体描绘和定性;从对大数据价值的探讨来深入解析大数据的珍贵所在;洞悉大数据的发展趋势;从大数据隐私这个特别而重要的视角审视人和数据之间的长久博弈。
第二层面是技术,技术是大数据价值体现的手段和前进的基石。在这里分别从云计算、分布式处理技术、存储技术和感知技术的发展来说明大数据从采集、处理、存储到形成结果的整个过程。
第三层面是实践,实践是大数据的最终价值体现。在这里分别从互联网的大数据,政府的大数据,企业的大数据和个人的大数据四个方面来描绘大数据已经展现的美好景象及即将实现的蓝图。
大家熟知的大数据技术首当其冲的是hadoop,另外还有spark、storm、impala等。
Hadoop,Spark和Storm是目前最重要的三大分布式计算系统,Hadoop常用于离线的复杂的大数据处理,Spark常用于离线的快速的大数据处理,而Storm常用于在线的实时的大数据处理。
Hive:Apache Hive是Hadoop的一个数据仓库系统,促进了数据的综述(将结构化的数据文件映射为一张数据库表)、即席查询以及存储在Hadoop兼容系统中的大 型数据集分析。Hive提供完整的SQL查询功能——HiveQL语言,同时当使用这个语言表达一个逻辑变得低效和繁琐时,HiveQL还允许传统的 Map/Reduce程序员使用自己定制的Mapper和Reducer。hive类似CloudBase,基于hadoop分布式计算平台上的提供 data warehouse的sql功能的一套软件。使得存储在hadoop里面的海量数据 的汇总,即席查询简单化。
Pig:Apache Pig是一个用于大型数据集分析的平台,它包含了一个用于数据分析应用的高级语言以及评估这些应用的基础设施。Pig应用的闪光特性在于它们的结构经得起 大量的并行,也就是说让它们支撑起非常大的数据集。Pig的基础设施层包含了产生Map-Reduce任务的编译器。Pig的语言层当前包含了一个原生语 言——Pig Latin,开发的初衷是易于编程和保证可扩展性。
HBase:Apache HBase是Hadoop数据库,一个分布式、可扩展的大数据存储。它提供了大数据集上随机和实时的读/写访问,并针对了商用服务器集群上的大型表格做出 优化——上百亿行,上千万列。其核心是Google Bigtable论文的开源实现,分布式列式存储。就像Bigtable利用GFS(Google File System)提供的分布式数据存储一样,它是Apache Hadoop在HDFS基础上提供的一个类Bigatable。
ZooKeeper:Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服 务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Mahout:Apache Mahout是个可扩展的机器学习和数据挖掘库,当前Mahout支持主要的4个用例:
Cassandra:Apache Cassandra是一个高性能、可线性扩展、高有效性数据库,可以运行在商用硬件或云基础设施上打造完美的任务关键性数据平台。在横跨数据中心的复制 中,Cassandra同类最佳,为用户提供更低的延时以及更可靠的灾难备份。通过log-structured update、反规范化和物化视图的强支持以及强大的内置缓存,Cassandra的数据模型提供了方便的二级索引(column indexe)。
Cloudera CDH:英文名称:CDH (Cloudera’s Distribution, including Apache Hadoop)。Cloudera公司的发行版,我们将该版本称为CDH(Cloudera Distribution Hadoop),可以简化hadoop生态系统的安装。
运行环境 | 模式 | 描述 |
---|---|---|
local | 本地模式 | 常用于本地开发测试,可分为local单线程和local-cluster多线程 |
standalone | 独立模式 | 典型的主从模式,主模式有单独故障处理,spark支持Zookeeper实现HA |
on yarn | 集群模式 | 运行在YARN资源管理架构之上,由YARN负责资源管理,spark负责任务调度和计算 |
on mesos | 集群模式 | 运行在mesos资源管理架构之上,由YARN负责资源管理,spark负责任务调度和计算 |
on cloud | 集群模式 | 比如AWS的EC2,使用这个模式可以很方便的房屋Amazon的S3;支持多种分布式系统HDFS、S3 |
Spark Streaming是核心Spark API的一个扩展,它并不会像Storm那样一次一个地处理数据流,而是在处理前按时间间隔预先将其切分为一段一段的批处理作业。Spark针对持续性数据流的抽象称为DStream(DiscretizedStream),一个DStream是一个微批处理(micro-batching)的RDD(弹性分布式数据集);而RDD则是一种分布式数据集,能够以两种方式并行运作,分别是任意函数和滑动窗口数据的转换。
在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工作节点(worker node)执行。一个拓扑中包括spout和bolt两种角色,其中spout发送消息,负责将数据流以tuple元组的形式发送出去;而bolt则负责转换这些数据流,在bolt中可以完成计算、过滤等操作,bolt自身也可以随机将数据发送给其他bolt。由spout发射出的tuple是不可变数组,对应着固定的键值对。
本篇仅仅是简单罗列了大数据包含的一部分技术,也不是全部,大数据生态圈很庞大,需要在实践中根据需求来进行选择。作为学习者也需要逐步理解、深入。
在此推荐一个自认为不错的学习大数据的网站:About云开发 http://www.aboutyun.com/