Hadoop基础(一)
Hadoop 基础知识
大数据已经火了很长很长时间了,从最开始是个公司都说自己公司的数据量很大,我们在搞大数据。到现在大数据真的已经非常成熟并且已经在逐渐的影响我们的生产生活。你可能听过支付宝的金融大数据,滴滴的出行大数据以及其他的诸如气象大数据等等,我们每个人都是数据的制造者,以后又将享受大数据技术所带来的生活的便利。
作为一个IT相关的从业人员,你肯定听过Hadoop,Spark了。毕竟技术在发展,现在大家上班下班地铁公交都交流啥,机器学习,人工智能,AI,搞大数据都不太敢说话。为啥,因为技术实在是发展太快了。。。有点跟不上节奏。但是现在大数据已经非常成熟了,而且是所谓的机器学习,人工智能的基础。所以,如果有想法赶紧学习学习吧。
大数据到底是啥?大数据是一个概念也是一门技术,它是在以Hadoop为代表的大数据平台框架上进行各种数据分析的技术。大数据包括以Hadoop和Spark为代表的基础大数据框架,还包括实时数据处理,离线数据处理,数据分析,数据挖掘和用机器算法进行预测分析等技术。 说通俗点,就是大量数据进行 数据存储,数据清洗,数据分析,数据处理,数据应用 的技术就是大数据。
我曾拜读过云戒大神的全栈大数据一书,该书中简单概要的描述了互联网的发展,大数据是其中非常重要的一环。大家可以看下图哈。
由图片看到啊,互联网往小了发展是移动互联网,之前移动互联网多么火造就了多少独角兽公司就不用多介绍了吧。现在的物联网也是站在了风口之上,各种可穿戴设备层出不穷。互联网往大了发展呢,第一步是云计算。云计算相信大家都用过,阿里云,aws,虽然收费越来越贵但是确实解决了很多问题。然后就是大数据了。所以大数据还是顺应了技术发展的潮流,也不枉他在我们IT圈口口相传火了这么多年。所以大数据是一个很有钱途的方向。
我们在介绍大数据的定义的时候反复的提到了Hadoop框架,那么作为大数据的代表性技术框架,我们必须要学好,用好它。接下来,我们就来简单看一下Hadoop框架。
Hadoop是一个开源的大数据框架
Hadoop是一个分布式计算的解决方案
Hadoop = HDFS(分布式存储服务) + MapReduce (分布式计算框架)
我们可以看出啊Hadoop包括两个核心,一个是HDFS一个是MapReduce。
问:假如你有一个10M的文件,你想过滤出含有Hadoop字符串的行,你会怎么做。
作为一个程序猿的你这时候就要秀一波操作了,你可能会用linux的grep命令。也可能去写几行代码搞一把。10M并不能让你感觉到绝望,那么10G呢,10T呢,甚至是10P呢。你会不会感觉到绝望?而Hadoop这两个核心就分别解决了上述的问题,HDFS解决了10T或者10P的数据存储的问题,MapReduce解决了分布式计算的问题,强强联手啊,能比较轻松的搞定令你感觉到绝望的问题。
HDFS
HDFS为什么是Hadoop的核心? 嗯,这个问题问得好。 因为存储是大数据的核心。 如果连数据存储都搞不定,你拿设么分析计算呢。要知道当我们入了大数据的门,我们接触的数据规模不局限于GB级了,我们可能会处理TB甚至是PB的数据,单机去存储几T的数据已经非常多了。如果是几PB的话单机是肯定搞不定的,所以HDFS帮你解决了这个问题。
我们都知道Hadoop的一大优点就是利用多个廉价的机器组成集群,HDFS就是将大量的数据存储到这成百上千的廉价的机器上,但是你访问的时候就跟使用本地文件一样的简单。比如你要访问一个/tmp/file1的文件,这个文件可能存储到了很多机器上。但是你是用户啊,用户就是上帝,你根本就不用管他怎么存的,存在哪。你只需要告诉HDFS你要这个文件就可以了。
对于HDFS啊,我这里只介绍三个重要的概念:数据块、NameNode、DataNode
数据块
如果我们对Hadoop有过了解的话我们都知道存储在HDFS上的数据都是按块存的。
数据块是什么?数据块是一个抽象的概念。
比如我们设置数据块的大小为128m,我们要存一个10m的文件,因为是按块存的 所以我们这个文件就独占了一个数据块。如果我们存储大小为300m的文件,那就会分成三个块进行存储。
那么按块存到底有什么好处呢, 首先 他屏蔽了文件这个概念,比如你存了一个200T的文件,这个文件大于你任意一个磁盘单个的大小,这种情况下你可以将整个文件分成n个数据块,然后存储到各个磁盘。这样就简化了存储系统的设计, 而且 我们知道为了保证数据安全我们肯定是要备份的, 而数据块它就非常适合用于数据备份,进而提供数据容错能力和可用性。
那么我们到底选择设置多大的数据块呢?数据块的默认大小是64M,一般我们会将他设置成128M。如果数据块的大小设置太小的话,那么对于一般的文件我们可能也需要按块进行存储了,这样的话当我们查询一个文件的时候就需要检索多个数据块的地址,这样效率不高,而且对NameNode的内存是一种极大的浪费。因为我们是通过NameNode去检索数据的,NameNode的内存中存储了数据块与文件和DataNode的映射,这个我们后面会提到。如果数据块设置太大的话,我们可能会遇到一些系统层面的问题,比如系统重启的时候需要重新加载数据,数据块越大恢复需要的时间越长。而且数据块过大对于并行的支持很差。 所以,一般我们都将其设置成128M。
NameNode 和 DataNode
我们都知道HDFS是分布式文件系统,既然是分布式那么一般是主从模式,那么谁是主,谁是从呢?NameNode就是主,而DataNode就是从。所以HDFS是由一个NameNode(Master)和多个DataNode(Slave)组成的。
NameNode 做了哪些工作
管理文件系统的NameSpace
维护着文件系统树以及文件树中所有的文件和文件夹的元数据(这些数据存储在内存中,也会持久化存储到磁盘)
记录着每个文件中各个块所在数据节点的位置信息,这些信息在DataNode启动的时候会发送给NameNode
DataNode 做了哪些工作
DataNode是文件系统的工作节点
负责存储和检索数据,并且将他所存储的块的列表发送给NameNode
既然有主从模式我们都要考虑如果Master也就是NameNode挂掉了怎么办,Hadoop2之后呢我们可以配置两个NameNode,一个处于active状态,一台处于standby状态。这样如果处于active状态的NameNode挂掉了,另外一台可以快速无缝的接手后续的工作。很大的程度上避免了单点问题的存在。
通过我们上面对HDFS进行的介绍,我们来总结一下HDFS的优缺点:
优点:
- 适合大数据存储,并有副本策略
- 可以构建在廉价的机器上,提供容错和恢复机制
- 提供流式文件访问,一次性写入,多次读取
那对应这三个优点呢 自然就会发现他的三个缺点:
- 不适合大量小文件存储
- 不适合并发写入,文件随机修改等场景, 一个文件只能有一个writer 只支持append
- 不适合随机读等低延时数据访问的场景。 本来就不是为这种场景设计的。
所以说,用不用Hadoop这头神象还是要根据具体的场景,具体的需求来考虑。 在合适的需求下用合适的工具才能达到合适的效果!
(未完待续,下节是HDFS的读写流程)
Hadoop基础(一)的更多相关文章
- [转]《Hadoop基础教程》之初识Hadoop
原文地址:http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不 ...
- 《Hadoop基础教程》之初识Hadoop
Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...
- [转载] 《Hadoop基础教程》之初识Hadoop
转载自http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用 ...
- hadoop基础教程免费分享
提起Hadoop相信大家还是很陌生的,但大数据呢?大数据可是红遍每一个角落,大数据的到来为我们社会带来三方面变革:思维变革.商业变革.管理变革,各行业将大数据纳入企业日常配置已成必然之势.阿里巴巴创办 ...
- Hadoop基础-Hadoop的集群管理之服役和退役
Hadoop基础-Hadoop的集群管理之服役和退役 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际生产环境中,如果是上千万规模的集群,难免一个一个月会有那么几台服务器出点故 ...
- Hadoop基础-镜像文件(fsimage)和编辑日志(edits)
Hadoop基础-镜像文件(fsimage)和编辑日志(edits) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看日志镜像文件(如:fsimage_00000000000 ...
- 实训任务02:Hadoop基础操作
实训任务02:Hadoop基础操作 班级 学号 姓名 实训1:创建测试文件上传HDFS,并显示内容 需求说明: 在本地计算机上创建测试文件helloH ...
- Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码
Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习MapReduce时的一些 ...
- Hadoop基础-通过IO流操作HDFS
Hadoop基础-通过IO流操作HDFS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上传文件 /* @author :yinzhengjie Blog:http://www ...
- 指导手册03:Hadoop基础操作
指导手册03:Hadoop基础操作 Part 1:查看Hadoop集群的基本信息1.查询存储系统信息(1)在WEB浏览器的地址栏输入http://master:50070/ 请查看自己的Hadoop集 ...
随机推荐
- Spring核心技术(一)——IoC容器和Bean简介
IoC容器和Bean简介 这章包括了Spring框架对于IoC规则的实现.Ioc也同DI(依赖注入).而对象是通过构造函数,工厂方法,或者一些Set方法来定义对象之间的依赖的.容器在创建这些Bean对 ...
- Codeforces Round #506 (Div. 3)B.Creating the Contest(dp)
B. Creating the Contest time limit per test 1 second memory limit per test 256 megabytes input stand ...
- 如何高效读写百万级的Excel?
高效读取百万级数据 接上一篇介绍的高效写文件之后,最近抽时间研究了下Excel文件的读取.概括来讲,poi读取excel有两种方式:用户模式和事件模式. 然而很多业务场景中的读取Excel仍然采用用户 ...
- Xdebug的安装、配置和使用
对于我这么一个渣渣php码农,平时总觉得echo.var_dump.print_r就能满足我的调试需求了,最近公司开始一个新项目,要大量阅读调试旧的源码,echo和var_dump开始不够用了,于是装 ...
- 高数A(下)第九章
第九章 空间解析几何 9.2 9.3 9.4 自测题
- 常见的HTTP状态码(HTTP Status Code)
HTTP状态码 当使用浏览器访问一个网页时,浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览 ...
- Ubuntu 16.04安装Kdbg替代Insight实现汇编的调试
Insight已经不能使用APT进行安装,且如果使用源码安装时需要修改.所以只能放弃,转投使用Kdbg. 安装: sudo apt-get install kdbg 使用: nasm -f elf64 ...
- mac下,redis的安装与配置
一.安装redis 1.到官网下载redis最新版本号,我下载的是3.0.3 http://redis.io/ 2.拷贝redis-3.0.3到/usr/local文件夹 3.解压缩sudo tar ...
- IOS开发之block应用
非常长时间都是在学习各位大神的力作,并汲取了不少养料,在此一并谢过各位大神了. 当然了.好东西是要跟大家一起分享的,近期发现了几个很不错的个人网站,都是介绍IOS开发的.当中有唐巧.破船之长.池建强. ...
- 2014年辛星starphp第一节设置入口文件以及App类
*********************本节目标**************** 1.首先是我们的框架大致布局,我们即将写成的这个框架.它的入口文件统一为star.php.它须要做的一些事,比方载入 ...