Hadoop入门


1.hadoop集群共同组成了一个"云"(服务器)

2.hadoop强调代码向数据迁移(数据庞大,迁移困难,所以把代码迁移到目标机器上,直接运行,提高效率)
  所以存储和处理要放到一起

3.Hadoop一种分布式的编程框架

4.sql是针对结构化数据很方便,而hadoop方便操作非结构化数据
  原则上,Hadoop和sql可以互补,Hadoop可以作为sql的执行引擎
 
  sql与Hadoop比较:
  1.扩展性:一般是买更大的单机服务器(贵),而hadoop是扩展服务器数量(便宜)
  2.Hadoop用键值对代替关系表
  3.用函数式编程(MapReduce)代替sql
  MapReduce使用脚本和代码来查询数据,这是更一般的查询方式,而sql是结构化查询
 
  sql是声明式语言,你告诉机器想要什么数据,数据库引擎来做出选择查询的方式
  Hadoop是获取数据的方式由你自己来指定
  4.Hadoop用离线批量处理代替在线处理
  hadoop专门为离线处理开发,适合一次写入,多次读取
 
5.写一个mapper和reduce很麻烦,但是一次写好,就容易拓展到千千万万的服务器上

6.简单的练习:统计一组文档中的单词

7.数据太大,内存放不下,那么就需要实现一个磁盘散列表(内存中放索引,磁盘中放对应的数据)

8.mapper将输入进行过滤和转换,reduce对结果进行聚合(分而破之)

9.在mapreduce中编写程序就是定制化mapper和reduce的过程
   1.应用的输入必须组织成键值对的列表
  
10.Hadoop结构:主从结构


   namenode:位于主端,指导从端的DataNode执行底层的I/O任务,跟踪文件如何被分为文件块,被哪些节点存储,以及运行是否正常
            大量消耗内存,I/O资源(可能会存在单点失效的问题)
   DataNode:位于从节点,负责分布式文件的读取和写入
            当要读取或者写入数据的时候,用户向namenode来获取文件块的存储地址,然后用户直接和对应的datanode通信,最后datanode与别的datanode通信,复制数据块实现冗余,见我的图1
   
   secondary Namenode(snn):检测HDFS状态的辅助守护进程,每个集群一个snn,与namenode通信,获取元数据的快照(namenode是单一故障点,ssn有助于错误恢复)
  
   JobTracker:计算的进程也分为主从结构,jobtracker每个集群一个,位于主端,负责分配任务,检测任务的整个运行状态
   taskTracker:负责jobtracker分配的单项任务,每个机器一个,taskTracker可以产生多个jVM来并行处理许多map和reduce的任务
               间隔一定时间与Jobtracker通信,否则jobtracker认为节点崩溃,重新分配任务
     
11.
SSH(Secure Shell)
是一种通用的、功能强大的、基于软件的网络安全解决方案。计算机每次向网络发送数据时,SSH都会自动对其进行加密。


12.为了使主节点来控制从节点,需要一种控制手段,为此,Hadoop使用了ssh协议
   所有节点上的账号要用相同的账号名
  
13.HDFS可以将很大的数据存储为1个文件(实际上是分布存储的),而别的系统无能为力

wordcount运行过程:http://blog.csdn.net/xw13106209/article/details/6116323

猜你喜欢

转载自542255641.iteye.com/blog/2288089
今日推荐