前言: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体系的一点认识的更多相关文章

  1. Hadoop体系架构简介

    今天跟一个朋友在讨论hadoop体系架构,从当下流行的Hadoop+HDFS+MapReduce+Hbase+Pig+Hive+Spark+Storm开始一直讲到HDFS的底层实现,MapReduce ...

  2. hadoop体系架构

    1.1          Hadoop 概念:hadoop是一个由Apache基金会所开发的分布式系统基础架构.是根据google发表的GFS(Google File System)论文产生过来的. ...

  3. Hadoop体系所有组件默认端口列表

    Why? Hadoop集群组件太多,默认端口无法记住,有事后需要查看,就在这里罗列下这里包含我们使用到的组件:HDFS, YARN, Hbase, Hive, ZooKeeper。 What? 端口 ...

  4. hadoop第二课

    1.1为什么需要Hadoop  (1)数据分析者面临的问题 – 数据日趋庞大,读写都出现性能瓶颈: – 用户的应用和分析结果,对实时性和响应时间 要求越来越高: – 使用的模型越来越复杂,计算量指数级 ...

  5. 后Hadoop时代的大数据技术思考:数据即服务

    1. Hadoop 的神话正在破灭 IBM leads BigInsights for Hadoop out behind barn. Shots heard IBM has announced th ...

  6. Hadoop架构的初略总结(1)

    Hadoop架构的初略总结(1) Hadoop是一个开源的分布式系统基础架构,此架构可以帮助用户可以在不了解分布式底层细节的情况下开发分布式程序. 首先我们要理清楚几个问题. 1.我们为什么需要Had ...

  7. hadoop生态圈介绍

    原文地址:大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍   1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分 ...

  8. 大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍

    Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...

  9. Issue 5:Hadoop博客系列转载

    Alex 的 Hadoop 菜鸟教程: 第1课 hadoop体系介绍 Alex 的 Hadoop 菜鸟教程: 第2课 hadoop 安装教程 (CentOS6 CDH分支 yum方式) Alex 的 ...

随机推荐

  1. Django快速学习搭建blog项目

    新手学习Django,本文学习的文档是<Django Web开发指南>.好了我也是新手,没什么好说了,go!- 首先先确定环境,我是在linux(Ubuntu14.04 gnome)下. ...

  2. 基于MFC的单文档,多文档,对话框应用程序

    从类的角度区分: 基于对话框(3个类): CAboutDlg 程序名App 程序名Dlg 单文档(5个类): CAboutDlg CMainFrame 程序名App 程序名Doc 程序名View 多文 ...

  3. js 获取当前日期时间3种格式化方法 yyyy-mm-dd hh:MM:ss

    方法一: Date.prototype.format = function (format) { var args = { "M+": this.getMonth() + 1, & ...

  4. python模块与包的导入

    1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...

  5. HTTP服务&Ajax编程知识点导图

  6. iOS各种调试技巧豪华套餐

    转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global Break ...

  7. maven本地安装jar包同时生成pom文件

    maven 本地安装jar包:mvn install:install-file -Dfile=本地路径/ojdbc12.jar -DgroupId=com.oracle -DartifactId=oj ...

  8. (转)R空间数据处理与可视化

    前言 很多朋友说在R里没法使用高德地图,这里给出一个基于leaflet包的解决方法. library(leaflet) # 添加高德地图 m <- leaflet() %>% addTil ...

  9. How to: Convert Between Various String Types

      This topic demonstrates how to convert various Visual C++ string types into other strings. The str ...

  10. java修改图片大小

    import java.awt.Image; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; impo ...