hadoop,hdfs,mapreduce,hive,derby配置总结(待续)

谈谈hadoop

因为最近做毕业设计需要基于云计算,所以自己搞了一阵子hadoop。在这个过程中觉得hadoop的相关学习资料非常的稀少。网上搜索时总是见到——“转”,“转”,"转"这个字样。而且我发现很多人的文章总是让人感觉缺乏自己的理解——即使是自己写的东西,也总是要引经据典。我非常反对这种做法,我认为在知识的传播过程中应该(尽量)通俗化。

言归正转,学习了这么久,对hadoop的功能的认识就是——并行,分布这两个特点。并行是对计算来说的,可以说是并行计算,就是多台计算机同时进行计算(完成同一个计算任务).分布则是对存储来说的,即分布式存储,简单说来就是用多台计算机(主要是指它的存储能力)来存放数据(文件,信息)。至于并行计算和分布式储存的优点,稍微有点计算机常识的人都不难理解,我不想细谈。

稍微接触了hadoop的人可能已经猜到了,并行计算和分布式存储分别是由Mapreduce和HDFS来完成的。这两个东西就是hadoop的基础。其实有了这两个东西之后,你就已经有了一台(物理上是有由多台计算机)计算机,只是一台计算机,不要用并行,分布去修饰。因为从用户的角度是看不到这台计算机是并行的或是分布式的。用户的只能感觉到以前计算一个课题需要1000个小时,现在用这台计算机计算只需要1个小时就能搞定(假设集群由1000台计算机组成),这中享受便是物理上的并行计算所提供的。在看看物理上的分布式存储能给用户什么新奇。对普通的电脑来说,没有什么比硬盘坏了更悲剧的事情了吧。但是这台神奇的电脑的用户却不必担心。因为HDFS除了分布出除外,还进行了冗余存储——就是一份数据(比如一分文件)实际上存放了多份。但是对用户来说只有一份,所以如果是你主动删除文件,那就不能恢复了。本来不想解释并行和分布,结果还是解释了这么一大堆。不过我的主要目的是想说明有了Mapreduce和HDFS就已经"够了"。你可以用他们来进行计算,你可以创建,删除,读写文件了。但是由于数据库对于一台计算机的逻辑完善性来说是很重要的,所以一般的提法是hadoop有三个核心——mapreduce, hdfs , hbase。hbase就是基于hdfs之上的数据库。不过hbase也可以直接安装在现有的文件系统之上。其实数据库只是文件系统的一个“用户”。它不关心,也不知道他所使用的文件系统到底是不是分布式存储的。这也说明了为什么hadoop的基础只有两个,而hbase不能称为hadoop的基础。数据库只是文件系统里面的文件的一种(更加合理,便于使用)的组织。这一段的主要内容是:hadoop的基础——mapreduce和hdfs;hadoop的核心——mapreduce,hdfs和hbase.

可以说hadoop是由mapreduce与hdfs(喜欢的话可以把hbase加上)拼起来的吗?这种说法好像是说hadoop就是这些东西的集合,集合中的东西彼此独立。这显然是不正确的。比如把mapreduce与hdfs联系起来就是hadoop要做的事。hadoop可以说是一套框架,一系列规范(其实如果你要是再在这个问题上深入地问我,我会承认我也不清楚)。

除了这三个东西之外,hadoop的项目还包括 avro,hive,pig,derby,mahout,zookeeper,chukwa等。这些对hadoop来说也是十分重要的,不过只是一辅助上的工具。读者可以自己去查阅相关资料。本文涉及的主要是hive和derby.hive是一个数据仓库。读者可能希望我能解释一下什么是数据仓库。要理解数据仓库的含义,我希望读者想想数据库是什么.数据库最直接的概念——表。是的,数据库核心的东西就是这"表"。表的作用是整齐,规范,简洁(减少冗余)地保存数据。由于表是数据库的核心,从表的功能,我们不难理解数据库的作用——存储数据。数据库是呆板的,它是面向数据的,正规的说法是面向事务处理的。通过SQL语句我们可以向里面加入数据,修改数据,删除数据。看到了吗?他就是离不开“数据“。那么数据仓库呢?我觉得数据仓库更数据库中的视图的概念很类似。视图其实就是一系列SQL语句,只不过与数据仓库不同的是视图依赖于表。但是视图却不管它所依赖的表是不是空表。注意“空表”与"表不存在"是完全不同的概念。因为空表之上的视图(SQL语句)依然是有意义的,但是表不存在,视图(SQL语句)就没有意义了。简单地说(我也只能这么干)数据仓库就是数据库之上的数据的组织形式。可以认为数据库是保存数据,数据仓库是显示数据。


hadoop配置

所谓配置就是要让这些独立的模块联系起来。配置可能是最复杂的事情了,每装一个模块,你就必须进行各种参数的配置。你是否知道你为什需要配置这些参数,以及这些参数的含义是什么,这些你都清楚吗?这一小结会分为五个部分来讲:配置hadoop,配置hdfs,配置mapreduce,配置hive,配置derby。

对后面四个部分,读者应该没有什么疑问,但是可能有读者会问为什么需要配置hadoop。在这里我会从逻辑或抽象的高度来给出答案。其实这也是一个抽象层次的问题。请记住hadoop是一个平台。请想一想要把多台计算机连接起来必须要有物理上的连接。这就是hadoop的抽象层次。而mapreduce,hdfs是要在这些物理链接及其它条件的基础之上,为用户模拟出一台"超级电脑".其中"一台"是个关键词。直接一点,mapreduce,hdfs是不(需要)知道网络链接方面的东西,如各台计算机的IP地址,端口等。请思考一下你用浏览器看这篇文章的时候需要关心物理链接吗?或者所浏览器的开发人员在开发浏览器的时候需要把TCP/IP协议考虑进来吗?其实如果用网络来比较倒是挺形象,hadoop如果看成是TCP/IP协议的话,那么mapreduce和hdfs就可以看成是想浏览器这类的网络通行软件。hadoop为mapreduce和hdfs提供了物理链接(的接口)。总之,mapreduce和hdfs不知道网络连接的存在,这属于hadoop的层次。当然hadoop还有其他方面的事情,并不限于网络链接。比如规定集群中各台计算机的角色。

配置hadoop:








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值