学习慕课网的视频:Hadoop大数据平台架构与实践--基础篇http://www.imooc.com/learn/391

一、第一章

#,Hadoop的两大核心:

    #,HDFS,分布式文件系统,存储海量的数据;
    #,MapReduce,并行计算框架,实现任务分解和调度;

#,Hadoop的优势有哪些呢?
    #,高扩张;
    #,低成本,不依赖于高端硬件,只要普通pc就可以了,使用软件的容错就可以保证系统的可靠性;
    #,有成熟的生态圈,主要是依赖于开源的力量,比如Hive、HBase等,这些工具可以让我们对于Hadoop的使用更加顺手。
    在国内、国外的很多大型公司都在用hadoop来搭建自己的平台。已经成为业界的大数据平台的首选;    
    目前行业对于Hadoop的人才的需求主要包括两个方面,一个是开发人才,一个是运维人才。

第四节,Hadoop生态系统及其版本
    #,比如有了Hive之后,我们只需要去写sql语句,然后他就会自动转换为HDFS的命令去执行。
    #,HBASE是一个存储结构化数据的分布式数据库,和传统的关系型数据库相比,他放弃了事务特性,转而追求更高的扩展性。与HDFS的不同在于,他提供了对于数据的随机读写和实时访问,实现了对表数据的读写功能。
    #,Zookeeper,用于监控hadoop节点的状态,维护他们的一致性等,做集群管理的;
    目前Hadoop已经到了ver2.x,不过本次课程主要使用ver1.2的版本来讲解。

第二章,Hadoop安装
   主要就是,安装Linux,安装Jdk,安装Hadoop,具体就不写了

第三章,Hadoop的核心,HDFS简介
第一节,HDFS设计架构
    基本概念,BLOCK、NameNode、DataNode
    HDFS里面的所有文件被分成相同大小的块,每个块的默认大小为64M。块是文件存储和处理的逻辑单元。
    HDFS有2类节点,NameNode和DataNode
    NameNode是管理节点,用于存放文件的元数据,他包括2点:
    1)文件与数据块的映射表;
    2)数据块与数据节点的映射表;
    DataNode是HDFS的工作节点,是用于存储真正的数据块的。 

第二节,HDFS数据管理策略
    HDFS中任何数据块都存储了3份。分布在2个机架的3个节点上。
    心跳检测,每个DataNode每隔几秒钟都要以心跳协议向NameNode发送心跳。
    二级NameNode,他其实就是NameNode的备机,热备,一旦NameNode挂了,他就自动切换为主NameNode

第三节,HDFS中文件的读写操作
   客户端读取文件的基本流程如下:找NameNode要元数据,这样就知道他包括哪些块以及这些块在哪些节点上,然后直接去读取,拼接,如下图所示。
   写文件的流程如下:首先是把文件按照64M拆分成多个块,然后找NameNode要DataNode列表,然后开始逐个块写入,先把块写入到其中一个节点,然后他内部会做流水线复制到其他2个节点,然后在更新NameNode的元数据,这样一个块就算写完了,然后再写下一个块。
 
第四节,HDFS的特点
1)数据冗余,硬件容错;
2)流式的数据访问,写一次,读多次。数据没办法修改,如果要修改只能把之前的数据删除,然后重新写入一份;
3)适合存储大文件,这是设计之初就这么考虑的,如果是大量的小文件的话,不适合,因为一个小文件也要存储元数据,此时NameNode的压力会非常大。
4)适合数据的批量读写,吞吐量高,不适合做交互式应用,低延迟很难满足;
5)支持顺序读写,不支持此多用户并发写相同文件;

第五节,HDFS的使用
这里讲师使用了几个hadoop的几个常用命令来演示如何在hadoop中创建一个目录,然后上传一个文件,然后再下载一个文件。
大致都是:
hadoop fs -put filea.dat  input/
或者是get命令下载文件
或者是cat命令查看文件内容
或者是hdfsadmin命令来查看整个系统的一些统计信息。
    
第四章,Hadoop的核心,MapReduce的原理与实现
第一节,MapReduce的原理
其实这个和Java8最新引入流操作中的并行操作类似,概念也都是想同的。
所谓Map就是要将任务拆分成很多份,这里给了一个例子,有1000副牌,少了一张,然后要找出到底是少了哪一章。
 然后又给了一个从日志中统计出访问此处最多的ip的例子,也都是类似的,先把日志分块,然后由不同的任务分别统计,然后再把他们的结果拿来合并,也就是Reduce了

第二节,MapReduce的运行流程
几个基本的概念:
#,Job&Task,比如上面的找出访问次数最多的任务就是一个Job,然后这个Job要完成的话要被分解为多个Task,放到不同的节点上去执行。Task又可以分为MapTask和ReduceTask
#,JobTracker,作业调度,分配任务并监控任务的执行进度,任务分配出去之后,TaskTracker每隔几秒钟要向JobTracker更新状态
#,TaskTracker,作业的执行
这几个概念互相之间的关系如下图:
一般来说,TaskTracker就是分配在其数据所在的DataNode上,这样可以保证运行的效率最高,毕竟读取本机的磁盘总是更快的。这也是MapReduce的一个设计思想,用移动计算来避免移动数据。 
MapReduce的容错机制,
1)重复执行;也就是执行的过程中如果出错了,他会重复执行,但是重复了4次之后如果还出错,他就放弃了。
 2)推测执行,用于解决那种计算速度特别慢的情况,此时会新开一个任务,然后再看这两个任务谁先执行完。





   



《Hadoop大数据架构与实践》学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. Android-Kotlin在Fragment获取View

    Android-Kotlin在Fragment获取View Overview 在使用Fragment的时候,使用了ButterKnife 来获取View但是一直出错,后来就直接使用Kotlin的导入布 ...

  2. Oracle数据库11gR2的卸载 - deinstall

    从Oracle 11gR2开始,Oracle推荐使用deinstall来卸载Oracle数据库.使用Oracle Universal Install(OUI) 的图形方式来卸载Oracle数据库软件了 ...

  3. android stuidio 导入项目问题。

    避免重新下载. === === === 改成自己对应的. ===== Gradle sync failed: Could not find method android() for arguments ...

  4. 运维服务器手段(监控宝,Nagios,百度通告平台)

    站在"巨人"的肩膀上运维 现实问题 之前在论坛看到一个运维工程师的帖子,内容如下: "现在的一个IT工作者最头疼的就是加班,秃顶的是IT工作者最多.单身的是IT工作者最多 ...

  5. hadoop 视频教程3之实战教程

    一,视频内容: 海量数据处理平台框架 hadoop介绍 hadoop 生态系统介绍 hdfs 设计原则 hdfs 系统架构 namenode datanode secondarynamenode hd ...

  6. STL中map的遍历

    map作为STL中的映射容器非常好用,我们来说一下map的遍历. map.first为key值,map.second为value值,key不可修改,value可修改. 定义一个迭代指针iter,使其指 ...

  7. 洛谷P1133 教主的花园

    题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教主最喜欢3种树,这3种树 ...

  8. Git和Gitlab

    参考 http://www.cnblogs.com/clsn/p/7929958.html#auto_id_16https://backlog.com/git-tutorial/cn/intro/in ...

  9. C# 高级编程9 介绍篇

    对等网络 在日常软件环境中,解决了以下问题: 不断增加的客户端通讯负载放在服务器上,服务器必须与每个客户端进行通讯,导致站点崩溃.大流量消耗.服务器无法响应等问题. 因此产生了P2B网络技术. 使用P ...

  10. Windows Sysinternals实战指南

    http://www.epubit.com.cn/book/details/4786 Mark Russinovich是Microsoft Azure首席技术官,主要负责微软云计算平台的技术战略和架构 ...