对Hadoop体系的一点认识
前言:Hadoop体系核心大多源自Google的思想,里面的思想的确很精彩!比如分布式计算,云的思想等,比起其他简单技术,更使得我想写这文章,
虽然这个东东在一般公司不可能用到!
首先由于hadoop是分布计算、存储的东四,所有组件其实都是构建在Hadoop集群的基础之上,所有玩hadoop,比先说这个。。
1.namenode&2nd namenode,类似master,但不是纯数据的,是个中央协调器的作用,可惜是单点的,不过有ZooKeeper----后面介绍下
2.datanode,类似slave,存放数据的节点
3.jobtracker,不管是java弄的还是其他脚本弄的东四,都用job表示,再转为MR运行的,一般跟在name上面
4.tasktracker,就是对job的分解任务了,分布在每个数据节点上
由于hadoop是建立在java体系的,所以有一堆配置的风格(或者说是Liunx风格)。所以hadoop环境变量配置和core、hdfs、MR三个配置文件是要的,
而在Linux下运行,其实主要也是一堆命令和配置了,还有ssh也是必备的等。不过上面所有事情主要还是应该算DBA&运维的事。。。
还有个Hadoop里面提供他系统内部的类似Linux的命令给用户交互,当然Eclipse也有插件可以直接图形操作的,只是一般也没啥用。
好了,再说Hadoop的两大基础核心:HDFS&MR
1.HDFS:这是分布式的文件系统,独立于附属系统(Linux等)的一个文件管理,有点像关系型数据库文件系统,但它能保存和管理任何文件,包括hbase的文件和其他任何类型文件。
而且是完全分布式的,也提供很好的可靠性机制,什么事务日志和镜像等概念,还有只写的,分小块存储(这个有点像mysql的分块思想)---可能因为这个才适合hbase的BigTable思想。
这里给个图---其实里面很多是旧思想
里面还有提供java的API,以方便一些像直接可以用java操作里面文件。
2.MR(MapReduce):这个的核心思想其实就是算法里的分而治之的先分再合处理来的。这个对于pig&hive等里面都用到它,当然用的比较多可能还是java的程序,
这里就没什么好多说的,其实对开发而言,这个用在计算的代码会比较多就是了。当然地,里面是job和task的协调,同时也提供web界面管理支持。
再者就是几个扩展组件:
1.Hbase(HadoopDataBase),说的这个,起初知道Hadoop的时候,以为像Mysql,各种组件组拼,然后是分布式集群的设置实用,但深入后,发觉有N大不同。。其实就跟Hbase也很不一样。
因为Hbase是很出名的nosql之一,支持一点类sql的HQL。再者是Mysql是行市存储,而Hbase是基于列式存储的,(其实是伪列式,里面先用了KV的行设计杂交的,其中kv是像网络的帧哦。)
而列式存储,可以较好保存相同类型数据,所以压缩率很高,也所以读取的IO性能高N多,而且其在数据分析的属性、维度方面是很方便的。再就是其是非事务性(后来版本不知)的只插入的,
很高效写,而且其插入是根据时间的(时间戳),所以很适合做数据分析决策。还有一点提下,就是其里面其实也是用了B+树的增删查,又是树的优势啊。。呵呵~
当然里面也是N复杂,如辅助索引,还有什么HRegion(Server)、 MemStore和FileStore原理等等。可能我理解还不深入,感觉Hbase的直插入日志方式和SVN等一个思想。。。
2.Pig(猪),hadoop客户端,直接有类似sql的pig语言、脚本等直接给MR任务去调用,免去java的调用方式
3.Hive(蜜蜂),数据仓库工具,支持简单的sql(叫HiveQL)查询,像是SQL映射到MR,也可用shell直接调用MR得到结果。还能结合JDBC/ODBC接口
4.Zookeeper(动物园管理者),协调节点层面的操作,如节点故障处理,单点失效切换等。注:和jobtracker处理MR层面的不同的。
5.sqoop(??),和关系型数据库交互的
6.Avro(鹰),数据序列化工具,如序列化java对象数据等
7.Chukwa(乌龟),提供数据采集&分析用的,如日志的采集、分析,定时、周期性。
总结:由于Hadoop的分布式原理,可以支持无限扩展性能需求,难怪google的处理能力那么强!说道这个,还得提下分布是对加密解密的事。
对于像RSA这样的,源自数论里的素数分解在时间上不对称原理,以前的几乎不可能,其实分布式计算应该也是可以很快破解(分解因式)出来的。。
只是hadoop就像云技术,很浮云啊,也很杯具。真正所谓大数据,里面涵盖真的太多东东了,像数据仓库、数据分析与设计、还有那个云技术也是。
虽然以前有过公司想用hadoop,不过没多少小公司会用到,估计我以后去的公司也恐怕没什么机会用到。。。o(︶︿︶)o 唉
这里插个小故事(有点被白老鼠感觉):记得不久前,也是个面试,一小公司(感觉)就说有钱!让我带(招)几个人搞个云平台,去!虽说云技术思想没啥特别,但要实现起来那可怎不是盖的~
而且目前只听说国内有阿里、百度那个级别的才。。。技术都不算什么,哪怕是用什么openstack之类的,就像电商一样(现都没啥技术含量了),关键有人会用你的云平台、云服务吗?
想我去带领几个人就------只能说啥人都有,也可能是我能力真的。。。撑死胆小的吧~~~
最后回来,其实简单使用的话(高级可能连各主件都要代码调用的!),hadoop跟我们交互最多还 存储(hbase)和计算(MR)。这个要求很好分辨实用场景!而且像其他非关系型数据库(如mongodb、redis等)一样,
必须知道其特性,然后适合用哪个、在哪里和怎么用是主要。。一句话得看场景!
PS,写了一堆,mysql没写成,却写完这个了,写文章有点好精力,之后一段时间,除了不全那个Android的,应该都不再怎么写文章。
因为总结的写得差不多,细化的要写那就真耗时间了,网上一大堆什么系列的,而且关键的细节还是要工作中去实践,并且我还是喜欢看的多。。。哈哈
对Hadoop体系的一点认识的更多相关文章
- Hadoop体系架构简介
今天跟一个朋友在讨论hadoop体系架构,从当下流行的Hadoop+HDFS+MapReduce+Hbase+Pig+Hive+Spark+Storm开始一直讲到HDFS的底层实现,MapReduce ...
- hadoop体系架构
1.1 Hadoop 概念:hadoop是一个由Apache基金会所开发的分布式系统基础架构.是根据google发表的GFS(Google File System)论文产生过来的. ...
- Hadoop体系所有组件默认端口列表
Why? Hadoop集群组件太多,默认端口无法记住,有事后需要查看,就在这里罗列下这里包含我们使用到的组件:HDFS, YARN, Hbase, Hive, ZooKeeper。 What? 端口 ...
- hadoop第二课
1.1为什么需要Hadoop (1)数据分析者面临的问题 – 数据日趋庞大,读写都出现性能瓶颈: – 用户的应用和分析结果,对实时性和响应时间 要求越来越高: – 使用的模型越来越复杂,计算量指数级 ...
- 后Hadoop时代的大数据技术思考:数据即服务
1. Hadoop 的神话正在破灭 IBM leads BigInsights for Hadoop out behind barn. Shots heard IBM has announced th ...
- Hadoop架构的初略总结(1)
Hadoop架构的初略总结(1) Hadoop是一个开源的分布式系统基础架构,此架构可以帮助用户可以在不了解分布式底层细节的情况下开发分布式程序. 首先我们要理清楚几个问题. 1.我们为什么需要Had ...
- hadoop生态圈介绍
原文地址:大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分 ...
- 大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...
- Issue 5:Hadoop博客系列转载
Alex 的 Hadoop 菜鸟教程: 第1课 hadoop体系介绍 Alex 的 Hadoop 菜鸟教程: 第2课 hadoop 安装教程 (CentOS6 CDH分支 yum方式) Alex 的 ...
随机推荐
- 常用 C#操作字符串方法
staticvoid Main(string[] args) { string s =""; //(1)字符访问(下标访问s[i]) s ="ABCD"; Co ...
- 学习 Linux,101: Linux 命令行
概述 本教程将简要介绍 bash shell 的一些主要特性,涵盖以下主题: 使用命令行与 shell 和命令交互 使用有效的命令和命令序列 定义.修改.引用和导出环境变量 访问命令历史和编辑工具 调 ...
- IS A 和 HAS A的区别
IS A:一般是用作继承或者接口类.比如:中国人和外国人都是人,重点在:是一个... . HAS A:一般用作对象和他的成员的从属关系.比如:中国人和外国人都有眼睛.耳朵.嘴巴.重点在:有一个... ...
- 使用Gogs搭建Git服务器
Git现在基本上已经代替SVN成为主流的源码管理工具了,我在之前的文章使用GIT进行源码管理--GIT托管服务中介绍过一些国内外的主流在线Git服务,虽然这些在线的Git服务大多非常好用,但是有的时候 ...
- 自己写的 限制文本框TEdit中只能输入数字
procedure TForm4.Edit1KeyPress(Sender: TObject; var Key: Char); begin , #]) then begin Key := #; end ...
- 使用python的redis 实现消息的pub/sub功能
直接上代码: 首先需要明确的是,客户端向服务端去发送消息,服务端只需要订阅是哪些各频道即可,然后客户端向这些个频道发送消息 在客户端的代码: #!/usr/bin/env python #coding ...
- hbase hmaster故障分析及解决方案:Timedout 300000ms waiting for namespace table to be assigned
最近生产环境hbase集群出现停掉集群之后hmaster无法启动现象,master日志报异常:Timedout 300000ms waiting for namespace table to be a ...
- SpringMVC学习笔记(二)
一.HandleMapping和HandlerAdapter的讲解 HandleMapping:处理映射器,可以理解为为请求的url查找对应的Controller类. HandlerAdapter:可 ...
- sassCore
core文件 setting 负责基础变量的文件,如常用的颜色,字体等变量. css3 负责css3属性前缀的文件.参考了bourbon,然后进行一系列的扩展及优化,以使解析出来的代码更加合理. me ...
- 如何在一台电脑上开启多个tomcat
大家基本上都只在一台电脑上面启动一个Tomcat,而启动多个Tomcat会提示报错等相关故障.而假如调试负载均衡及集群的时候,需要在一台电脑上面开启多个Tomcat,那么怎么开启呢? 首先需要知道的是 ...