今天发这个的目的是为了给自己扫开迷茫,告诉自己该进阶了,下面内容不一定官方和正确。全然个人理解,欢迎大家留言讨论

1.什么是hadoop

答:是google的核心算法MapReduce的一个开源实现。

用于海量数据的并行处理。
hadoop的核心主要包括:HDFS和MapReduce
HDFS是分布式文件系统。用于分布式存储海量数据。 MapReduce是分布式数据处理模型,本质是并行处理。

2.用hadoop来做什么?

1、最简单的。做个数据备份/文件归档的地方。这利用了hadoop海量数据的存储能力

2、数据仓库/数据挖掘:分析web日志。分析用户的行为(如:用户使用搜索时,在搜索结果中点击第2页的概率有多大)

3、搜索引擎:设计hadoop的初衷,就是为了高速建立索引。

4、云计算:据说,中国移动的大云,就是基于hadoop的

5、研究:hadoop的本质就是分布式计算,又是开源的。有非常多思想值得借鉴。

3.什么是MapReduce。它是怎么工作的

MapReduce借用了函数式编程的概念,是google发明的一种用分布式来处理大数据集的数据处理模型

[这也是和SQL数据库重大差别之中的一个,用函数编程(MapReduce)取代声明查询SQL。

SQL:声明查询结果,让数据库引擎判定获取数据。

MapReduce:数据处理步骤由你自己制定(脚本,代码)eg:复杂的数据统计模型。或改变图像数据格式]



工作流程:

1、client提交数据到DFS,然后被分为多个split,然后通过inputformatter以key-value传给jobTraker。jobTraker分配工作给多个map(taskTraker)。project师重写map,在各个taskTraker上分别运行代码任务。做到数据不动,代码动(改革之中的一个)。真正实现代码分布式。

2、tasktraker运行完代码后,将结果通过上下文收集起来,再传给reduce(也是taskTraker)。经过排序等操作,再运行project师重写的reduce方法,终于将结果通过outputFormatter写到DFS。

4.什么是HDFS。它的存储机制?

HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目。是分布式计算中数据存储管理的基础,坦白说HDFS是一个不错的分布式文件系统。它有非常多的长处。但也存在有一些缺点,包括:不适合低延迟数据訪问、无法高效存储大量小文件、不支持多用户写入及随意改动文件。

有一个文件FileA。100M大小。

Client将FileA写入到HDFS上。

HDFS按默认配置。

HDFS分布在三个机架上Rack1,Rack2,Rack3。

a. Client将FileA按64M分块。分成两块,block1和Block2;

b. Client向nameNode发送写数据请求,如图蓝色虚线①——>。

c. NameNode节点,记录block信息。并返回可用的DataNode,如粉色虚线②———>。

Block1: host2,host1,host3

Block2: host7,host8,host4

原理:

    NameNode具有RackAware机架感知功能。这个能够配置。

    若client为DataNode节点。那存储block时。规则为:副本1,同client的节点上;副本2,不同机架节点上。
副本3,同第二个副本机架的还有一个节点上。其它副本随机挑选。 若client不为DataNode节点,那存储block时。规则为:副本1,随机选择一个节点上。副本2,不同副本1。机架上;
副本3。同副本2同样的还有一个节点上;其它副本随机挑选。

d. client向DataNode发送block1;发送过程是以流式写入。

流式写入过程,

    1>将64M的block1按64k的package划分;

    2>然后将第一个package发送给host2;

    3>host2接收完后,将第一个package发送给host1,同一时候client想host2发送第二个package。

    4>host1接收完第一个package后。发送给host3。同一时候接收host2发来的第二个package。

5>以此类推,如图红线实线所看到的,直到将block1发送完成。

    6>host2,host1,host3向NameNode。host2向Client发送通知,说“消息发送完了”。

如图粉红颜色实线所看到的。

7>client收到host2发来的消息后。向namenode发送消息,说我写完了。这样就真完成了。

如图黄色粗实线

    8>发送完block1后,再向host7,host8。host4发送block2,如图蓝色实线所看到的。

    9>发送完block2后,host7,host8,host4向NameNode,host7向Client发送通知,如图浅绿色实线所看到的。

    10>client向NameNode发送消息。说我写完了,如图黄色粗实线。。。这样就完成了。

分析。通过写过程,我们能够了解到:

①写1T文件。我们须要3T的存储。3T的网络流量贷款。

②在运行读或写的过程中。NameNode和DataNode通过HeartBeat进行保存通信,确定DataNode活着。
假设发现DataNode死掉了,就将死掉的DataNode上的数据,放到其它节点去。读取时,要读其它节点去。 ③挂掉一个节点。没关系,还有其它节点能够备份;甚至,挂掉某一个机架,也没关系。其它机架上,也有备份。 以后是通过源代码分析,和代码经验来慢慢加深这些概念的理解巩固他们,欢迎大家常驻,一起学习。

Hadoop,MapReduce,HDFS面试题的更多相关文章

  1. HDFS基本命令与Hadoop MapReduce程序的执行

    一.HDFS基本命令 1.创建目录:-mkdir [jun@master ~]$ hadoop fs -mkdir /test [jun@master ~]$ hadoop fs -mkdir /te ...

  2. 【Big Data - Hadoop - MapReduce】hadoop 学习笔记:MapReduce框架详解

    开始聊MapReduce,MapReduce是Hadoop的计算框架,我学Hadoop是从Hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能 ...

  3. C#、JAVA操作Hadoop(HDFS、Map/Reduce)真实过程概述。组件、源码下载。无法解决:Response status code does not indicate success: 500。

    一.Hadoop环境配置概述 三台虚拟机,操作系统为:Ubuntu 16.04. Hadoop版本:2.7.2 NameNode:192.168.72.132 DataNode:192.168.72. ...

  4. Hadoop MapReduce执行过程详解(带hadoop例子)

    https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 Map ...

  5. Hadoop之HDFS文件操作常有两种方式(转载)

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  6. hadoop MapReduce Yarn运行机制

    原 Hadoop MapReduce 框架的问题 原hadoop的MapReduce框架图 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 首先用户程序 (JobClient) ...

  7. Hadoop笔记HDFS(2)

    高级Hadoop MapReduce管理 1 调试部署好的Hadoop的配置 2 运行基准测试检验Hadoop的安装 3 重新利用JVM提升性能 4 容错性 5 调试脚本-分析失败任务原因 6 设置失 ...

  8. Hadoop MapReduce编程 API入门系列之薪水统计(三十一)

    不多说,直接上代码. 代码 package zhouls.bigdata.myMapReduce.SalaryCount; import java.io.IOException; import jav ...

  9. Hadoop MapReduce编程 API入门系列之压缩和计数器(三十)

    不多说,直接上代码. Hadoop MapReduce编程 API入门系列之小文件合并(二十九) 生成的结果,作为输入源. 代码 package zhouls.bigdata.myMapReduce. ...

随机推荐

  1. learn_requests

    # -*- coding: utf-8 -*- import requests URL_IP = 'http://localhost:8000/ip' URL_GET = 'http://localh ...

  2. 【Python初级】StringIO和BytesIO读写操作的小思考

    from io import StringIO; f = StringIO(); f.write('Hello World'); s = f.readline(); print s; 上面这种方法“无 ...

  3. 【模式匹配】更快的Boyer

    1. 引言 前一篇中介绍了字符串KMP算法,其利用失配时已匹配的字符信息,以确定下一次匹配时模式串的起始位置.本文所要介绍的Boyer-Moore算法是一种比KMP更快的字符串匹配算法,它到底是怎么快 ...

  4. Python中的模块(1)

    Python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则 ...

  5. python开发_搜索本地文件信息写入文件

    功能:#在指定的盘符,如D盘,搜索出与用户给定后缀名(如:jpg,png)相关的文件 #然后把搜索出来的信息(相关文件的绝对路径),存放到用户指定的 #文件(如果文件不存在,则建立相应的文件)中 之前 ...

  6. Unity UGUI之Text

    下图是Text组件的内容. Character(字符) Text--输入要显示的文本 Font--要渲染文本的字体类型(例如:黑体.宋体) FontStyle--是否要加粗,倾斜等. Normal-- ...

  7. SQl CASE 语句的嵌套使用方式

    case具有两种格式.简单case函数和case搜索函数.  1.简单case函数 case sex when ’1’ then ’男’ when ’2’ then ’女’else ’其他’ end ...

  8. Linux下ip route、ip rule、iptables的关系(转)

    1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...

  9. Ubuntu 11.04安装GCC 4.6.1

    首先下载相应的源代码:ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.6.1/#下载 gcc-4.6.1.tar.bz2 ftp://ftp.dti.a ...

  10. [Xarmrin.IOS]使用Build Host 在Windows上建置IOS程式及DeBug

    使用Xamarin開發IOS程式時, 必須要在Mac上才可以編譯程式,若想在windows系統上編譯,則可透過Build host的方式, 但還是要有一台Mac的電腦就是了XD 首先你的Mac必須要已 ...