hadoop学习日志
Hadoop思想之源:Google
面对的数据和计算难题
——大量的网页怎么存储
——搜索算法
带给我们的关键技术和思想
——GFS
——Map-Reduce
——Bigtable
Hadoop创始人介绍:
Hadoop作者Doug cutting,就职Yahoo期间开发了Hadoop项目,目前在CLoudera公司从事架构工作。他不但是Hadoop项目的发起人,还是Lucene、Nutch项目的发起人。

Hadoop简介:
——名字来源于Hadoop之父Doug Cutting儿子的玩具大象。
2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,一个微缩版:Nutch。
Hadoop于2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入成为Hadoop的项目中。
——分布式存储系统HDFS(Hadoop Distributed File System)
- 分布式存储系统;
- 提供了:高可靠性、高扩展性和高吞吐率的数据存储服务;
——分布式计算框架Map-Reduce
- 分布式计算框架
- 具有易于编程、高容错性和高扩展性等优点。
HDFS优点:
- 高容错性:
- 数据自动保存多个副本
- 副本丢失后,自动恢复(最少保留三份)
- 高可靠性
- Hadoop按位存储和处理数据的能力值得人们信赖
- 高扩展性
- Hadoop是在可用的计算机集簇间分配数据并完成计算任务,这些集簇可以方便地扩展到数以千计的节点中
- 高效性:
- Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快
- 适合批处理:
- 移动计算而非数据移动
- 数据位置暴露给计算框架
- 适合大数据处理:
- GB、TB、甚至PB级数据
- 百万规模以上的文件数量
- 10K+节点
- 可构建在廉价机器上:
- 通过多副本提高可靠性
- 提供了容错和回复机制
HDFS缺点:
- 不适合低延迟数据访问:
- 比如毫秒级
- 低延迟于高吞吐率
- 不适合小文件存取:
- 占用NameNode大量内存
- 寻道时间超过读取时间
- 不支持并发写入、文件随机修改:
- 一个文件只能有一个写者,不支持多用户写入及任意修改文件
- 仅支持append(数据追加)

HDFS数据存储元(block)
- 文件被切分成固定大小的数据块
- 默认数据块大小为64MB,可以配置
- 若文件大小不到64MB,则单独存成一个bloce
- 一个文件存储方式
- 按大小被切分成若干个block,存储到不同节点上
- 默认情况下每个block都有三个副本
- Block大小和副本数通过Clien端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更
HDFS设计思想:

NameNode(NN):
- NameNode主要功能:接受客户端的读写服务
- NameNode保存metadata信息,包括:
- 整个文件系统的目录信息
- 文件owership(所有者)和permissions(权限)
- 文件包含哪些block
- 文件包含的Block保存在哪个DataNode(由DataNode启动时上报)
- NameNode的metadata信息在启动后会加载到内存:
- metadata存储到磁盘文件名为“fsimage”
- Block的位置信息不会保存到“fsimage”
- edits记录对metadata的操作日志
SecondaryNameNode(SNN):
- 它不是NameNode的备份(但可以做备份),它的主要工作是帮助NameNode合并edits log,减少NameNode启动时间
- SecondaryNameNode执行合并时机:
- 根据配置文件设置的时间间隔fs.checkpoint.period默认3600秒
- 根据配置文件设置edits log大小fs.checkpoint.size规定edits文件的最大值,默认是64MB
SecondaryNameNode合并流程:

DataNode(DN):
- 存储数据(block)
- 启动DataNode线程的时候会向NameNode汇报block信息(block位置信息),保存到NameNode的metadata(fsimage文件)中
- 通过向NameNode发送心跳保持与其联系(3秒一次),如果NameNode10分钟没有收到DataNode的心跳,则认为其已经lost,并copy其上的block到其他DataNode,以保证每个文件的每个Block至少保存有3个副本
Block的副本放置策略:

HDFS写流程

HDFS读流程

HDFS文件权限:
- 与Linux文件权限类似
- r:read;w:write;x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容
- 如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是张三
- HDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁
安全模式:
- namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作
- 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志
- 此刻namenode运行在安全模式,即namenode的文件系统对于客户端来说是只读的(显示目录,显示文件内容等。写、删除、重命名都会失败)。
- 在此阶段Namenode手机各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的,在一定比例(可以设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束
- 当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中。
HDFS安装:
完全分布式安装
- 下载
- 解压
- 检查java和ssh的免密码登录
- 修改core-site.xml
- 修改hdfs-site.xml
- 修改masters文件和slaves文件
- 格式化namenode
- start-hdfs.sh启动
hadoop学习日志的更多相关文章
- Hadoop学习日志- install hadoop
资料来源 : http://www.tutorialspoint.com/hadoop/hadoop_enviornment_setup.htm Hadoop 安装 创建新用户 $ su passwo ...
- Hadoop学习笔记—5.自定义类型处理手机上网日志
转载自http://www.cnblogs.com/edisonchou/p/4288737.html Hadoop学习笔记—5.自定义类型处理手机上网日志 一.测试数据:手机上网日志 1.1 关于这 ...
- Hadoop学习之旅三:MapReduce
MapReduce编程模型 在Google的一篇重要的论文MapReduce: Simplified Data Processing on Large Clusters中提到,Google公司有大量的 ...
- [Hadoop] Hadoop学习历程 [持续更新中…]
1. Hadoop FS Shell Hadoop之所以可以实现分布式计算,主要的原因之一是因为其背后的分布式文件系统(HDFS).所以,对于Hadoop的文件操作需要有一套全新的shell指令来完成 ...
- Hadoop学习路线图
Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...
- Hadoop学习总结之五:Hadoop的运行痕迹
Hadoop学习总结之五:Hadoop的运行痕迹 Hadoop 学习总结之一:HDFS简介 Hadoop学习总结之二:HDFS读写过程解析 Hadoop学习总结之三:Map-Reduce入门 Ha ...
- 大数据Hadoop学习之搭建hadoop平台(2.2)
关于大数据,一看就懂,一懂就懵. 一.概述 本文介绍如何搭建hadoop分布式集群环境,前面文章已经介绍了如何搭建hadoop单机环境和伪分布式环境,如需要,请参看:大数据Hadoop学习之搭建had ...
- Hadoop学习------Hadoop安装方式之(二):伪分布部署
要想发挥Hadoop分布式.并行处理的优势,还须以分布式模式来部署运行Hadoop.单机模式是指Hadoop在单个节点上以单个进程的方式运行,伪分布模式是指在单个节点上运行NameNode.DataN ...
- Hadoop网站日志数据清洗——正则表达式实现
周旭龙前辈的Hadoop学习笔记—网站日志分析项目案例简明.经典,业已成为高校大数据相关专业的实验项目.上周博主也完成了这个实验,不同于周前辈使用特殊符号切割字符串得到数据的做法,博主使用了正则表达式 ...
随机推荐
- Linux 常用ps命令
(1)查看系统所有进程: 标准格式: ps -e ps -ef ps -eF ps -ely BSD格式: ...
- Mysql授权GRANT ALL PRIVILEGES
1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 " ...
- 软件工程 speedsnail 冲刺7
2015-5-11 完成任务:蜗牛移动的一部分: 遇到问题: 问题1 速度,坐标,角度: 速度分级别设置: 坐标记录功能,方便障碍物检测: 暂定初始45度角: 解决1 未解决上述问题 明日任务: 蜗牛 ...
- JS匿名函数自执行函数
JS匿名函数自执行函数:(function(){})();(function(){}) 这是一个函数,函数后面接(),则是调用函数 比如(function(arg){console.log(arg); ...
- Silverlight中本地化的实现(语言切换)
对于本地化这个功能我个人一直觉得在需求阶段就要确定该项目需不需要实行本地化,这样后面就可以减轻许多工作量,Sl中对本地化功能的支持与ASP.NET 中一样,主要使用CultureInfo类来完成的. ...
- ViewGroup 和 View 事件传递及处理小谈
前言 在自定义组件的时候少不了会去处理一些事件相关的东西,关于事件这块网上有很多文章,有说的对的也有说的不对的,我在理解的时候也有过一段时间的迷惑,现在把自己理解的东西写下来,给有相同疑问的朋友提供些 ...
- js问题集锦
1.不在服务器中的访问,如file:///C:/Users/yx/Desktop/index.html这样的地址,ajax是无法访问的,不会执行send();必须放到服务器才可以. 2.阻止正常提交v ...
- 【转】mysql字符串函数
对于针对字符串位置的操作,第一个位置被标记为1(即:第一个字母索引为1). ASCII(str) 返回字符串str的 最左面字符的ASCII代码值.如果str是空字符串, 返回0.如果str是NULL ...
- django-url调度器-高级篇
我们在中级篇中学会了如何进行反向解析,但是有这样一个问题,在为 url 命名的时候,名字不能重复,否则会导致各种各样的问题.在 url 还少的时候保证不重名还是比较简单的,但是 url 多起来以后就比 ...
- 第一个MySQL 存储过程
昨天写了人生第一个mysql存储过程:遗憾的是,这个存储过程最后还是没用上,用php代码替代 话说mysql的存储过程真是反人类,不查reference,基本不能看懂那些语句:语言中能和它相比的,只有 ...