您的位置:首页 > 大数据

Hadoop学习笔记-大数据开发 入门 初学者 基本概念

2014-09-04 13:50 896 查看
大数据开发 入门 初学者 基本概念
Q1、做大数据开发一般都在Hadoop、Hive、Mahout等这些技术平台上实施是吧,hadoop和其他的之间的关系是什么?
A1:http://wenku.baidu.com/link?url=j6jGVmRINwiaxUDfR3caoGZaSWAJnHCpEL5HLJ5qHnORKj6r9n6nJYTJKGkswhwNNNb99sjcuJlsXW7cLe8tOro0YPCyQOsbeurKsF7c9Ce
查看该网页第3、4页,当中有Hadoop的生态系统整体架构的详细逻辑关系说明,先可以熟悉一下,有个框架性概念理解即可。

Q2、Shell、Python、Perl、Tcl这些脚本语言是否对工作开展提高效率有帮助,是否也需要学习学习?

Q3、HBASE SQL和Hive基础是否很重要?

Q4、java的基础在从事大数据开发工作中重要吗?看了很多招聘上强调了JAVA的基础重要性
A4:HPCC:ECL是HPCC环境的主要编程语言。ECL编译为优化的C++,然后再编译为在Thor和Roxie平台上可执行的DLL。ECL的包括封装在函数里的内联的C++代码。外部服务可以用任何语言书写,并且编译为ECL可调用的函数共享库。管道接口允许执行用任何语言写的合并到任务里的外部程序。
Hadoop的MapReduce任务通常用Java书写。其他语言的支持是通过流或者管道接口来实现的。其他处理环境是在Hadoop的MapReduce之上执行的,比如HBase和Hive,它们拥有自身的语言接口。Pig拉丁语言和Pig执行环境提供了高级别的数据流语言,然后把这种语言映射到到多个Java书写的MapReduce任务上

Q5、熟悉Linux/Unix操作系统的基础会不会有帮助呢?

Q6、Hadoop和HPCC都只是想操作系统上运行的开发IDE一样吗?

Q7:Hive Hbase区别
A7:Hive是为了简化编写MapReduce程序而生的,使用MapReduce做过数据分析的人都知道,很多分析程序除业务逻辑不同外,程序流程基本一样。在这种情况下,就需要Hive这样的用戶编程接口。Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑,就是些表的定义等,也就是表的元数据。使用SQL实现Hive是因为SQL大家都熟悉,转换成本低,类似作用的Pig就不是SQL。
HBase为查询而生的,它通过组织起节点內所有机器的內存,提供一個超大的內存Hash表,它需要组织自己的数据结构,包括磁盘和內存中的,而Hive是不做这个的,表在HBase中是物理表,而不是逻辑表,搜索引擎使用它來存储索引,以满足查询的实时性需求。

Q8、如何理解MapReduce(怎样向妻子解释MapReduce)
A8:昨天,我在Xebia印度办公室发表了一个关于MapReduce的演说。演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈)。我成功地向技术听众们(主要是Java程序员,一些Flex程序员和少数的测试员)解释了MapReduce的概念,这让我感到兴奋。在所有辛勤的工作之后,我们在Xebia印度办公室享用了丰盛的晚餐,然后我径直回了家。
回家后,我的妻子(Supriya)问道:“你的会开得怎么样?”我说还不错。 接着她又问我会议是的内容是什么(她不是从事软件或编程领域的工作的)。我告诉她说是MapReduce。“Mapduce,那是什么玩意儿?”她问道: “跟地形图有关吗?”我说不,不是的,它和地形图一点关系也没有。“那么,它到底是什么玩意儿?”妻子问道。 “唔…让我们去Dominos(披萨连锁)吧,我会在餐桌上跟你好好解释。” 妻子说:“好的。” 然后我们就去了披萨店。
我们在Domions点餐之后,柜台的小伙子告诉我们说披萨需要15分钟才能准备好。于是,我问妻子:“你真的想要弄懂什么是MapReduce?” 她很坚定的回答说“是的”。 因此我问道:
我: 你是如何准备洋葱辣椒酱的?(以下并非准确食谱,请勿在家尝试)
妻子: 我会取一个洋葱,把它切碎,然后拌入盐和水,最后放进混合研磨机里研磨。这样就能得到洋葱辣椒酱了。但这和MapReduce有什么关系?
我: 你等一下。让我来编一个完整的情节,这样你肯定可以在15分钟内弄懂MapReduce.
妻子: 好吧。
我:现在,假设你想用薄荷、洋葱、番茄、辣椒、大蒜弄一瓶混合辣椒酱。你会怎么做呢?
妻子: 我会取薄荷叶一撮,洋葱一个,番茄一个,辣椒一根,大蒜一根,切碎后加入适量的盐和水,再放入混合研磨机里研磨,这样你就可以得到一瓶混合辣椒酱了。
我: 没错,让我们把MapReduce的概念应用到食谱上。Map和Reduce其实是两种操作,我来给你详细讲解下。
Map(映射): 把洋葱、番茄、辣椒和大蒜切碎,是各自作用在这些物体上的一个Map操作。所以你给Map一个洋葱,Map就会把洋葱切碎。 同样的,你把辣椒,大蒜和番茄一一地拿给Map,你也会得到各种碎块。 所以,当你在切像洋葱这样的蔬菜时,你执行就是一个Map操作。 Map操作适用于每一种蔬菜,它会相应地生产出一种或多种碎块,在我们的例子中生产的是蔬菜块。在Map操作中可能会出现有个洋葱坏掉了的情况,你只要把坏洋葱丢了就行了。所以,如果出现坏洋葱了,Map操作就会过滤掉坏洋葱而不会生产出任何的坏洋葱块。
Reduce(化简):在这一阶段,你将各种蔬菜碎都放入研磨机里进行研磨,你就可以得到一瓶辣椒酱了。这意味要制成一瓶辣椒酱,你得研磨所有的原料。因此,研磨机通常将map操作的蔬菜碎聚集在了一起。
妻子: 所以,这就是MapReduce?
我: 你可以说是,也可以说不是。 其实这只是MapReduce的一部分,MapReduce的强大在于分布式计算。
妻子: 分布式计算? 那是什么?请给我解释下吧。
我: 没问题。
假设你参加了一个辣椒酱比赛并且你的食谱赢得了最佳辣椒酱奖。得奖之后,辣椒酱食谱大受欢迎,于是你想要开始出售自制品牌的辣椒酱。假设你每天需要生产10000瓶辣椒酱,你会怎么办呢?
妻子: 我会找一个能为我大量提供原料的供应商。
我:是的……就是那样的。那你能否独自完成制作呢?也就是说,独自将原料都切碎? 仅仅一部研磨机又是否能满足需要?而且现在,我们还需要供应不同种类的辣椒酱,像洋葱辣椒酱、青椒辣椒酱、番茄辣椒酱等等。
妻子: 当然不能了,我会雇佣更多的工人来切蔬菜。我还需要更多的研磨机,这样我就可以更快地生产辣椒酱了。
我:没错,所以现在你就不得不分配工作了,你将需要几个人一起切蔬菜。每个人都要处理满满一袋的蔬菜,而每一个人都相当于在执行一个简单的Map操作。每一个人都将不断的从袋子里拿出蔬菜来,并且每次只对一种蔬菜进行处理,也就是将它们切碎,直到袋子空了为止。
这样,当所有的工人都切完以后,工作台(每个人工作的地方)上就有了洋葱块、番茄块、和蒜蓉等等。
妻子:但是我怎么会制造出不同种类的番茄酱呢?
我:现在你会看到MapReduce遗漏的阶段---搅拌阶段。MapReduce将所有输出的蔬菜碎都搅拌在了一起,这些蔬菜碎都是在以key为基础的 map操作下产生的。搅拌将自动完成,你可以假设key是一种原料的名字,就像洋葱一样。 所以全部的洋葱keys都会搅拌在一起,并转移到研磨洋葱的研磨器里。这样,你就能得到洋葱辣椒酱了。同样地,所有的番茄也会被转移到标记着番茄的研磨器里,并制造出番茄辣椒酱。
披萨终于做好了,她点点头说她已经弄懂什么是MapReduce了。我只希望下次她听到MapReduce时,能更好的理解我到底在做些什么。
伯乐博客编注:下面这段话是网上其他人用最简短的语言解释MapReduce:
We want to count all the books in the library. You count up shelf #1, I count up shelf #2. That's map. The more people we get, the faster it goes.
我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。
Now we get together and add our individual counts. That's reduce.
现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”

Q9:hadoop和hive的逻辑关系
A9:hadoop是包含了mapreduce和文件系统HDFS的分布式系统
hive是一个数据仓库系统,促进了Hadoop容易汇总数据,算是Hadoop的子项目,可以互补
hadoop streaming是让你用别的语言写map和reduce执行文件,像是C++
hadoop就是个框架,你只要用java写出map和reduce的执行文件,放上去运行就OK了
hive就是个数据仓库,有自己的查询语言HiveQL,可以在map和reduce里面调用

Q10:什么是SAAS模式
A10:软件即服务英文是Software-as-a-service的意译。国外称为SaaS,国内通常叫做软件运营服务模式,简称为软营模式。
  在这种模式下,客户不再像传统模式那样花费大量投资用于硬件、软件、人员,而只需要支出一定的租赁服务费用,通过互联网便可以享受到相应的硬件、软件和维护服务,享有软件使用权和不断升级;公司上项目不用再像传统模式一样需要大量的时间用于布置系统,多数经过简单的配置就可以使用。这是网络应用最具效益的营运模式。
  提供商为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列服务,企业无需购买软硬件、建设机房、招聘IT人员,即可通过互联网使用信息系统,这种既省时又省力又能满足客户软件在线应用需求的模式就是SAAS模式!
  说白了就是利用互联网到一个SAAS平台上,利用平台提供的软件,选择自己需要的服务,这个好处就是不需要安装到你的个人终端上,只要能上网,就能使用,这就意味着你可以随时随地的查看企业的相关情况。对于中小型企业来说,不用花费大量投资在硬件、软件、人员,只要支付一定的租用费用就可以获得软件使用权,这就为企业节省下一笔不小的资金。

Q11:ETL是什么?
A11:
对于数据仓库以及ETL的知识,我基本上是个门外汉。一切都得从头开始,记个笔记,方便自已了解学习进度。
首先,我们来了解最基本的定义:
嗯,也有人将ETL简单称为数据抽取。至少在未学习之前,领导告诉我的是,你需要做一个数据抽取的工具。
其实呢,抽取是ETL中的关键环节,顾名思义,也就将数据从不同的数据源中抓取(复制)出来。
太简单了!
上面的解释无首无尾,有点象能让你吃饱的第七个烧饼,
仔细一想,抽取是不可能单独存在,我们需要将与之关联的一些其它环节拿出来。
于是,得到ETL的定义:
将数据抽取(Extract)、转换(Transform)、清洗(Cleansing)、装载(Load)的过程。
好的,既然到了这一个层次,我们完全会进一步展开联想,引出上面这个抽象事件的前因后果,
抽取的源在哪里?
装载的目的又是什么呢?
抽取源:大多数情况下,可以认为是关系数据库,专业一点,就是事务处理系统(OLTP)。当然,广义一点,可能会是其它数据库或者是文件系统。
目的地:OK,我们希望是数据仓库。数据仓库是啥?在学习之前,它对我来说是个抽象的怪物,看过一些简单的资料之后,才了解这个怪物一点都不怪。堆积用来分析的数据的了,是用来分析的,于是,它区别于OLTP中的数据存储。
然后,我们来看看为什么要ETL?
在我看来,有两个原因。
一:性能 将需要分析的数据从OLTP中抽离出来,使分析和事务处理不冲突。咦?这不是数据仓库的效果吗?是了,
数据仓库,大多数情况下,也就是通过ETL工具来生成地。
二:控制 用户可以完全控制从OLTP中抽离出来的数据,拥有了数据,也就拥有了一切。
嗯,OLAP分析,数据挖掘等等等……。
最后,总结一下,
从资料上看,ETL是一门大学问,对于大学问,实在有些怕怕,所以,我觉得应该停下来想一想,下一步我该干点啥?
嗯,时不我待,我没有办法一切从头开始,
是了,从应用出发,看看现在工作中,最急需的是什么?
鸭子要变成一盘菜,并不是举手将之置于油锅之劳。
OK,要将生米变为熟饭,鸭子放上大盘,一堆废话之后,我得先看看厨房里都有了一些啥?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: