Hadoop第一讲

haoop思想之源:Google

google搜索引擎、Gmail,安卓,App spot,GoogleMaps,GoogleEarth, Google学术,Google翻译,Google+, 下一步:Google What!!


Google低成本之道:

1. 不使用超级计算机,不使用存储;

2. 大量使用普通的PC服务器,提供冗余的集群服务;

3.运营商倒向Google付费,否则不提供搜索服务,因此不需要支付宽带的钱。

Google面对的数据和计算难题:

1. 大量的网页怎么存储(google中的数据全部存放在内存中,因此服务器含有磁盘)

2. 搜索算法()    

      如何快速搜索网页:倒排索引,通过分词将查询语句进行划分,然后根据倒排索引查找词中对应的列表,每一个项表示对应的网页,在其中的偏移量,出现频率等。这样就可以快速查找到对应的网页。其中的难点是分词,例如中文可以使用字典分词

3. Page-Rank计算问题

    根据PagRank判断页面的价值,通过页面的链接数判断页面的价值。G=aS+(1-a)*1/n*U, PangeRank就是G的特征向量q, q = Gq;

                  

    进行迭代运算是很困难因为网页数据是上亿的,若是一台计算机是不行的,因此需要使用分布式的计算集群进行计算(集群技术出现),该思想就是Map-Reduce技术。

   图中q1~q4是特征向量分别再不同的节点上运算,然后计算完成后将所有的计算结果发送到一个几点进行处理,即能够得到第一次迭代后的特征向量q1'~q4'。最后不断迭代直到收敛为止。通过若干个屌丝最后计算出一个高富帅的结果

                   

Google的关键技术和思想:

1.GFS

2.Map-reduce

3.BigTable


Hadoop起源--Lucene

    Lucene目的是为了软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文搜索功能或建立完整的全文检索引擎。

    对于大量数据的处理,Lucene面对和Google同样困难,因此其创作者DougCutting学习和模仿Google解决问题的办法。

    他用两年的业余时间根据Google公布的GFS、MapReduce的思想细节实现DFS和MapReduce机制,因此其中的机制Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入Hadoop的项目中。

    Hadoop的高度:实现云计算的事实标准,包含有几个有强大生命力的子项目、已经在上千节点上运行。

                          

    HBase: 数据按列存放,能够提高响应速度,提高I/O。

    Pig:  对于不是使用Java语言的开发人员,可以使用Pig语言进行编写MapReduce编程。

    Hive:是SQL语言和MapReduce之间的映射器,面向DBA,只需要输入SQL就能够转换为MapReduce语言。

    ZooKeeper:进行和节点的通信工具,用于维护节点间的通讯。

                      

Namenode名称节点

  HDFS的守护进程,记录文件是如何分割成数据块的,以及这些数据块被存储到哪些节点上,对内存和I/O进行集中管理。通常是单点,因此容易出现单点故障

Secondary Namenode辅助名称节点

  监控HDFS状态的辅助后台进程,每个集群都有一个。会和Namenode进行通讯备份Namenode中的数据,但是当Namenode崩溃后需要手动才能切换到辅助名称节点。与Namenode进行通讯定期保存HDFS元数据快照,可以作为备份节点使用。

                        

Data Node

    每台服务器都运行一个,会放在从服务器上,负责把HDFS数据块读写到本地文件系统。

JobTracker作业跟踪器

    用于处理(用户提交的代码)的后台程序,决定由哪些文件参与处理,然后切割task并分配节点(将代码分派到含有相关数据的节点上去运行)。监控task,重启失败的节点。每一个集群只有唯一一个JobTracker,位于Master节点上。

TaskTracker

    位于Slave节点上,与datanode结合(代码数据一起的原则),管理各自节点上的task(由jobtracker分配)。每一个节点只有一个tasktracker,当一个tasktracker可以启动多个JVM,用于并行执行map和reduce任务。与Jobtracker交互,以便知道tasktracker执行任务的情况。


Master和Slave

    Master是运行了Namenode或Secondary Namenode、Jobtracker的进程称为Master。通常会将Namdenode和Jobtracker放在一起,而将Secondery Namenode放在另一个物理机器上。

   Slave是运行了Tasktracker、Datanode的进程的机器。

为什么使用Hadoop,什么时候需要使用Hadoop?

   前端感知设备收集到的数据,有后台对数据进行解包,然后分析并且存储到数据库和文件系统中。因此我们可以通过数据分析数据包的接收情况,丢包率怎么样,什么时候不正常工作了。都可以用通过该方法进行分析。


数据分析者面临的问题:

1.数据利益庞大,无论是入库和查询,都出现性能瓶颈;

2.用户的应用和分析结果呈整合趋势对实时性、响应时间要求越来越高;

3.使用的模型越来越复杂,计算指数级增长,有的是NP的。

期待的解决方案:

1.完善解决性能瓶颈,在可见的未来不容易出现新瓶颈

2.过去拥有的技能平稳过度,比如使用SQL、R最好不变

3.转移平台的成本多高?平台软硬件成本,再开发成本,技能培训成本,维护成本。

Hadoop思想:用若干个屌丝代替高富帅。并且可以扩展。

Why not Hadoop?

1. Java 

2.难以驾驭

3.数据集成困难(原本的数据是存放在文本文件或关系数据库中,应该怎么提取存放呢)

4.Hadoop VS Oracle

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值