HDFS
黑猴子的家
拥有技术,便拥有自由
B站 Up主专注于技术 https://space.bilibili.com/398602910
展开
-
黑猴子的家:HDFS写数据之网络拓扑
在本地网络中,两个节点被称为“彼此近邻”是什么意思?在海量数据处理中,其主要限制因素是节点之间数据的传输速率——带宽很稀缺。这里的想法是将两个节点间的带宽作为距离的衡量标准。节点距离:两个节点到达最近的共同祖先的距离总和。例如,假设有数据中心d1机架r1中的节点n1。该节点可以表示为/d1/r1/n1。利用这种标记,这里给出四种距离描述。Distance(/d1/r1/n1, /d1/r1/...原创 2018-09-25 11:23:00 · 180 阅读 · 4 评论 -
黑猴子的家:HDFS-HA 自动故障转移工作机制
image.png手动进行故障转移,在该模式下,即使现役NameNode已经失效,系统也不会自动从现役NameNode转移到待机NameNode,下面学习如何配置部署HA自动进行故障转移。自动故障转移为HDFS部署增加了两个新组件:ZooKeeper和ZKFailoverController(ZKFC)进程。ZooKeeper是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高...原创 2018-09-05 17:19:00 · 242 阅读 · 0 评论 -
黑猴子的家:CombineTextInputFormat 切片机制
关于大量小文件的优化策略1、默认情况默认情况下TextInputformat对任务的切片机制是按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个maptask,这样如果有大量小文件,就会产生大量的maptask,处理效率极其低下。2、优化策略(1)最好的办法,在数据处理系统的最前端(预处理/采集),将小文件先合并成大文件,再上传到HDFS做后续分析。(2...原创 2018-09-25 17:13:00 · 240 阅读 · 0 评论 -
黑猴子的家:FileInputFormat切片机制
1、job提交流程源码详解waitForCompletion()submit();// 1、建立连接connect(); // 1)创建提交job的代理 new Cluster(getConfiguration()); // 2)判断是本地yarn还是远程 initialize(jobTrackAddr, conf); // 2、提交...原创 2018-09-25 17:01:00 · 229 阅读 · 0 评论 -
黑猴子的家:自定义InputFormat切片机制
(1)自定义一个类继承FileInputFormat(2)改写RecordReader,实现一次读取一个完整文件封装为KV(3)在输出时使用SequenceFileOutPutFormat输出合并文件后续会写相关案列...原创 2018-09-25 17:16:00 · 166 阅读 · 0 评论 -
黑猴子的家:MapTask工作机制
1、并行度决定机制(1)问题引出maptask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速度。那么,mapTask并行任务是否越多越好呢?(2)MapTask并行度决定机制一个job的map阶段MapTask并行度(个数),由客户端提交job时的切片个数决定。2、MapTask工作机制(1)Read阶段Map Task通过用户编写的Record...原创 2018-09-25 17:28:00 · 201 阅读 · 0 评论 -
黑猴子的家:Shuffle机制
Mapreduce确保每个reducer的输入都是按键排序的。系统执行排序的过程(即将map输出作为输入传给reducer)称为shuffle。Shuffle的正常意思是洗牌或弄乱,可能大家更熟悉的是Java API里的Collections.shuffle(List)方法,它会随机地打乱参数list里的元素顺序。...原创 2018-09-26 09:01:00 · 115 阅读 · 0 评论 -
黑猴子的家:partition分区
将统计结果按照条件输出到不同文件中(分区)。比如:将统计结果按照手机归属地不同省份输出到不同文件中(分区)1、默认partition分区public class HashPartitioner<K, V> extends Partitioner<K, V> { /** Use {@link Object#hashCode()} to partition. */...原创 2018-09-26 09:06:00 · 267 阅读 · 0 评论 -
黑猴子的家: WritableComparable排序
排序是MapReduce框架中最重要的操作之一。Map Task和Reduce Task均会对数据(按照key)进行排序。该操作属于Hadoop的默认行为。任何应用程序中的数据均会被排序,而不管逻辑上是否需要。对于Map Task,它会将处理的结果暂时放到一个缓冲区中,当缓冲区使用率达到一定阈值后,再对缓冲区中的数据进行一次排序,并将这些有序数据写到磁盘上,而当数据处理完毕后,它会对磁盘上所有...原创 2018-09-26 09:10:00 · 180 阅读 · 0 评论 -
黑猴子的家:NameNode 镜像文件和编辑日志文件
1、概念namenode被格式化之后,将在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current//目录中产生如下文件edits_0000000000000000000fsimage_0000000000000000000.md5seen_txidVERSION(1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点...原创 2018-09-25 11:50:00 · 257 阅读 · 0 评论 -
黑猴子的家:NameNode 滚动编辑日志
正常情况HDFS文件系统有更新操作时,就会滚动编辑日志。也可以用命令强制滚动编辑日志。1、滚动编辑日志(前提必须启动集群)[victor@hadoop102 current]$ hdfs dfsadmin -rollEdits2、镜像文件什么时候产生Namenode启动时加载镜像文件和编辑日志...原创 2018-09-25 11:52:00 · 402 阅读 · 0 评论 -
黑猴子的家:NameNode 版本号
1、查看namenode版本号在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current这个目录下查看VERSIONnamespaceID=1933630176clusterID=CID-1f2bf8d1-5ad2-4202-af1c-6713ab381175cTime=0storageType=NAME_NODEblockpoolID...原创 2018-09-25 11:55:00 · 216 阅读 · 1 评论 -
黑猴子的家:DataNode 工作机制
1、一个数据块在datanode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。2、DataNode启动后向namenode注册,通过后,周期性(1小时)的向namenode上报所有的块信息。3、心跳是每3秒一次,心跳返回结果带有namenode给该datanode的命令如复制块数据到另一台机器,或删除某个数据块。如果超...原创 2018-09-25 13:14:00 · 88 阅读 · 1 评论 -
黑猴子的家:DataNode数据完整性
1、当DataNode读取block的时候,它会计算checksum。2、如果计算后的checksum,与block创建时值不一样,说明block已经损坏。3、client读取其他DataNode上的block。4、datanode在其文件创建后周期验证checksum。...原创 2018-09-25 13:15:00 · 190 阅读 · 0 评论 -
黑猴子的家:DataNode之掉线时限参数设置
datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为:timeout = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs...原创 2018-09-25 13:17:00 · 219 阅读 · 0 评论 -
黑猴子的家:DataNode 目录结构
和namenode不同的是,datanode的存储目录是初始阶段自动创建的,不需要额外格式化。1、在/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current这个目录下查看版本号[victor@hadoop102 current]$ cat VERSION storageID=DS-1b998a1d-71a3-43d5-82dc-c0ff329...原创 2018-09-25 13:30:00 · 161 阅读 · 0 评论 -
黑猴子的家:NameNode与Secondary NameNode工作机制
1、第一阶段:namenode启动(1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。(2)客户端对元数据进行增删改的请求(3)namenode记录操作日志,更新滚动日志。(4)namenode在内存中对数据进行增删改查2、第二阶段:Secondary NameNode工作(1)Secondary...原创 2018-09-25 11:45:00 · 170 阅读 · 0 评论 -
黑猴子的家:HFDS命令行操作
1、基本语法[victor@node1 hadoop-2.8.2]$ bin/hadoop fs 具体命令或者[victor@node1 hadoop-2.8.2]$ bin/hdfs dfs 具体命令2、HDFS参数大全[victor@node1 hadoop-2.8.2]$ bin/hadoop fs Usage: hadoop fs [generic options...原创 2018-09-21 15:58:00 · 426 阅读 · 0 评论 -
黑猴子的家:HDFS-回收站
1、默认回收站默认值fs.trash.interval=0,0表示禁用回收站,可以设置删除文件的存活时间。默认值fs.trash.checkpoint.interval=0,检查回收站的间隔时间。要求fs.trash.checkpoint.interval<=fs.trash.interval。2、启用回收站修改core-site.xml,配置垃圾回收时间为1分钟。...原创 2018-09-25 14:52:00 · 256 阅读 · 0 评论 -
黑猴子的家:HDFS 快照管理
快照相当于对目录做一个备份。并不会立即复制所有文件,而是指向同一个文件。当写入发生时,才会产生新文件。1、基本语法(1)hdfs dfsadmin -allowSnapshot 路径 (功能描述:开启指定目录的快照功能)(2)hdfs dfsadmin -disallowSnapshot 路径 (功能描述:禁用指定目录的快照功能,默认是禁用)(3)hdfs dfs -createS...原创 2018-09-25 14:40:00 · 98 阅读 · 0 评论 -
黑猴子的家:机架感知之HDFS的副本节点选择
1、官方ip地址:http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/RackAwareness.htmlhttp://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Data_Replicat...原创 2018-09-25 11:34:00 · 191 阅读 · 0 评论 -
黑猴子的家:手动故障转移HDFS-HA
1、规划集群hadoop102 hadoop103 hadoop104 NameNode NameNode "" JournalNode JournalNode JournalNode DataNode DataNode DataNode 2、修改配置文件core-site.xml<configuration>...原创 2018-09-05 22:00:00 · 196 阅读 · 0 评论 -
黑猴子的家:自动故障转移HDFS-HA
1、规划集群hadoop102 hadoop103 hadoop104 NameNode NameNode "" JournalNode JournalNode JournalNode DataNode DataNode DataNode ZK ZK ZK 2、关闭所有HDFS服务[yinggu@hadoop...原创 2018-09-05 22:08:00 · 194 阅读 · 0 评论 -
黑猴子的家:Hue 与 HDFS集成
1、梳理集群环境linux01 linux02 linux03 NameNode DataNode DataNode DataNode ResourceManager NodeManager NodeManager NodeManager JobHistoryServer Z...原创 2018-09-14 14:05:00 · 305 阅读 · 0 评论 -
黑猴子的家:HDFS客户端操作, 环境准备与测试
1、jar包准备1)解压win7下编译过的hadoop-2.8.2.tar.gz到非中文目录2)进入share文件夹,查找所有jar包,并把jar包拷贝到_lib文件夹下3)在全部jar包中查找sources.jar,并剪切到_source文件夹。4)在全部jar包中查找tests.jar,并剪切到_test文件夹。2、配置HADOOP_HOME环境变量(1) 解压window6...原创 2018-09-25 09:29:00 · 242 阅读 · 0 评论 -
黑猴子的家:API 操作 HDFS 获取文件系统
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、方法一 import static org.junit.Assert.*; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache....原创 2018-09-25 10:47:00 · 166 阅读 · 0 评论 -
黑猴子的家:API 操作 HDFS 文件上传
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、Code @Test public void putFileToHDFS() throws Exception{ // 1 创建配置信息对象 // new Configuration();的时候,它就会去加载j...原创 2018-09-25 10:51:00 · 156 阅读 · 0 评论 -
黑猴子的家:API 操作 HDFS 文件下载
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、Code@Testpublic void getFileFromHDFS() throws Exception{ // 1 创建配置信息对象 Configuration configuration = new Confi...原创 2018-09-25 10:55:00 · 108 阅读 · 0 评论 -
黑猴子的家:API 操作 HDFS 目录创建
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、Code @Test public void mkdirAtHDFS() throws Exception{ // 1 创建配置信息对象 Configuration configuration = new Co...原创 2018-09-25 10:58:00 · 133 阅读 · 0 评论 -
黑猴子的家:API 操作 HDFS 文件夹删除
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、Code @Test public void deleteAtHDFS() throws Exception{ // 1 创建配置信息对象 Configuration configuration = new ...原创 2018-09-25 10:59:00 · 233 阅读 · 0 评论 -
黑猴子的家:API 操作 HDFS 文件名更改
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、Code @Test public void renameAtHDFS() throws Exception{ // 1 创建配置信息对象 Configuration configuration = new C...原创 2018-09-25 11:01:00 · 232 阅读 · 0 评论 -
黑猴子的家:API 操作 HDFS文件详情查看
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、Code//查看文件名称、权限、长度、块信息@Testpublic void readListFiles() throws Exception { // 1 创建配置信息对象 Configuration configuration = ...原创 2018-09-25 11:03:00 · 182 阅读 · 0 评论 -
黑猴子的家:API 操作 HDFS
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、Code@Testpublic void findAtHDFS() throws Exception { // 1 创建配置信息对象 Configuration configuration = new Configura...原创 2018-09-25 11:04:00 · 98 阅读 · 0 评论 -
黑猴子的家:IO 操作 HDFS 文件上传
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、Code @Test public void putFileToHDFS() throws Exception{ // 1 创建配置信息对象 Configuration configuration = new ...原创 2018-09-25 11:05:00 · 90 阅读 · 0 评论 -
黑猴子的家:IO 操作 HDFS 文件下载
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、Code @Test public void getFileToHDFS() throws Exception{ // 1 创建配置信息对象 Configuration configuration = new ...原创 2018-09-25 11:06:00 · 127 阅读 · 0 评论 -
黑猴子的家:定位读取HDFS文件
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、下载第一块@Test// 定位下载第一块内容public void readFileSeek1() throws Exception { // 1 创建配置信息对象 Configuration configuration = new ...原创 2018-09-25 11:11:00 · 116 阅读 · 0 评论 -
黑猴子的家:HDFS写数据流程
1)客户端向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在。2)namenode返回是否可以上传。3)客户端请求第一个 block上传到哪几个datanode服务器上。4)namenode返回3个datanode节点,分别为dn1、dn2、dn3。5)客户端请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信...原创 2018-09-25 11:18:00 · 117 阅读 · 1 评论 -
黑猴子的家:HDFS读数据流程
1)客户端向namenode请求下载文件,namenode通过查询元数据,找到文件块所在的datanode地址。2)挑选一台datanode(就近原则,然后随机)服务器,请求读取数据。3)datanode开始传输数据给客户端(从磁盘里面读取数据放入流,以packet为单位来做校验)。4)客户端以packet为单位接收,先在本地缓存,然后写入目标文件。...原创 2018-09-25 11:20:00 · 206 阅读 · 0 评论 -
黑猴子的家:一致性模型
1、Code -> GitHubhttps://github.com/liufengji/hadoop_hdfs.git2、下载第一块 //debug调试代码 @Test public void writeFile() throws Exception{ // 1 创建配置信息对象 Configuration configu...原创 2018-09-25 11:13:00 · 144 阅读 · 0 评论