广东外贸网站建设,网页设计模板html代码,在静安正规的设计公司网站,Thinkphp开发wordpressNamenode 是整个文件系统的管理节点。它维护着整个文件系统的文件目录树#xff0c;文件/目录的元信息metadate和每个文件对应的数据块列表。
功能#xff1a;接收用户的操作请求。
metadate信息包括#xff1a;
1、文件的owership和permission。
2、文件包含哪些block块… Namenode 是整个文件系统的管理节点。它维护着整个文件系统的文件目录树文件/目录的元信息metadate和每个文件对应的数据块列表。
功能接收用户的操作请求。
metadate信息包括
1、文件的owership和permission。
2、文件包含哪些block块
3、block保存在哪个DataNode由DataNode启动时上报 metadate存储到磁盘文件名为“fsimage”。
warnblock的位置信息不回保存到fsimage上。在DataNode启动时上报存在内存里。 文件位置 hdfs-default.xml的dfs.namenode.name.dir 属性hadoop-hdfs-2.7.2.jar / hdfs-default.xml propertynamedfs.namenode.name.dir/namevaluefile://${hadoop.tmp.dir}/dfs/name/valuedescriptionDetermines where on the local filesystem the DFS name nodeshould store the name table(fsimage). If this is a comma-delimited listof directories then the name table is replicated in all of thedirectories, for redundancy. /description
/property${hadoop.tmp.dir} 配置在 core-site.xml 中 propertynamehadoop.tmp.dir/namevalue/home/hadoop_data/value
/propertymetadate信息保存磁盘包含
1、fsimage元数据镜像文件。存储某一时段NameNode内存元数据信息无block位置信息。 2、editsmetadate操作日志文件
3、fstime保存最近一次checkpoint的时间。 查看NameNode内容
方式一webhdfs查看
命令hdfs oiv -i xxx -o Usage: bin/hdfs oiv [OPTIONS] -i INPUTFILE -o OUTPUTFILE
Offline Image Viewer
View a Hadoop fsimage INPUTFILE using the specified PROCESSOR,
saving the results in OUTPUTFILE.The oiv utility will attempt to parse correctly formed image files
and will abort fail with mal-formed image files.The tool works offline and does not require a running cluster in
order to process an image file.The following image processors are available:* XML: This processor creates an XML document with all elements ofthe fsimage enumerated, suitable for further analysis by XMLtools.* FileDistribution: This processor analyzes the file sizedistribution in the image.-maxSize specifies the range [0, maxSize] of file sizes to beanalyzed (128GB by default).-step defines the granularity of the distribution. (2MB by default)* Web: Run a viewer to expose read-only WebHDFS API.-addr specifies the address to listen. (localhost:5978 by default)* Delimited (experimental): Generate a text file with all of the elements commonto both inodes and inodes-under-construction, separated by adelimiter. The default delimiter is \t, though this may bechanged via the -delimiter argument.Required command line arguments:
-i,--inputFile arg FSImage file to process.Optional command line arguments:
-o,--outputFile arg Name of output file. If the specifiedfile exists, it will be overwritten.(output to stdout by default)
-p,--processor arg Select which type of processor to applyagainst image file. (XML|FileDistribution|Web|Delimited)(Web by default)
-delimiter arg Delimiting string to use with Delimited processor.
-t,--temp arg Use temporary dir to cache intermediate result to generateDelimited outputs. If not set, Delimited processor constructsthe namespace in memory before outputting text.
-h,--help Display usage information and exit实例 hdfs oiv -i fsimage_0000000000000000162 -o fsimage_000000000000000016_cat 16/08/12 18:46:54 INFO offlineImageViewer.FSImageHandler: Loading 2 strings
16/08/12 18:46:54 INFO offlineImageViewer.FSImageHandler: Loading 18 inodes.
16/08/12 18:46:54 INFO offlineImageViewer.FSImageHandler: Loading inode references
16/08/12 18:46:54 INFO offlineImageViewer.FSImageHandler: Loaded 0 inode references
16/08/12 18:46:54 INFO offlineImageViewer.FSImageHandler: Loading inode directory section
16/08/12 18:46:54 INFO offlineImageViewer.FSImageHandler: Loaded 11 directories
16/08/12 18:46:54 INFO offlineImageViewer.WebImageViewer: WebImageViewer started. Listening on /127.0.0.1:5978. Press CtrlC to stop the viewer.hadoop会启动内置的tomcat。监听端口 127.0.0.1:5978 浏览器访问webhdfs方式见博客http://blog.csdn.net/zengmingen/article/details/52189857
SecureCRT clone session 执行hdfs dfs -ls -R webhdfs://127.0.0.1:5978/ drwx------ - hadoop supergroup 0 2016-04-14 22:19 webhdfs://127.0.0.1:5978/tmp
drwx------ - hadoop supergroup 0 2016-04-14 22:19 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn
drwx------ - hadoop supergroup 0 2016-04-14 22:19 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn/staging
drwx------ - hadoop supergroup 0 2016-04-14 22:19 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn/staging/hadoop
drwx------ - hadoop supergroup 0 2016-04-14 22:20 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn/staging/hadoop/.staging
drwxr-xr-x - hadoop supergroup 0 2016-04-14 22:19 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn/staging/history
drwxrwxrwt - hadoop supergroup 0 2016-04-14 22:19 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn/staging/history/done_intermediate
drwxrwx--- - hadoop supergroup 0 2016-04-14 22:20 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn/staging/history/done_intermediate/hadoop
-rwxrwx--- 1 hadoop supergroup 33303 2016-04-14 22:20 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn/staging/history/done_intermediate/hadoop/job_1460643564332_0001-1460643581404-hadoop-wcount.jar-1460643608082-1-1-SUCCEEDED-default-1460643592087.jhist
-rwxrwx--- 1 hadoop supergroup 349 2016-04-14 22:20 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn/staging/history/done_intermediate/hadoop/job_1460643564332_0001.summary
-rwxrwx--- 1 hadoop supergroup 115449 2016-04-14 22:20 webhdfs://127.0.0.1:5978/tmp/hadoop-yarn/staging/history/done_intermediate/hadoop/job_1460643564332_0001_conf.xml
drwxr-xr-x - hadoop supergroup 0 2016-04-14 22:19 webhdfs://127.0.0.1:5978/wc
drwxr-xr-x - hadoop supergroup 0 2016-04-14 22:20 webhdfs://127.0.0.1:5978/wc/output
-rw-r--r-- 1 hadoop supergroup 0 2016-04-14 22:20 webhdfs://127.0.0.1:5978/wc/output/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 36 2016-04-14 22:20 webhdfs://127.0.0.1:5978/wc/output/part-r-00000
drwxr-xr-x - hadoop supergroup 0 2016-04-14 00:58 webhdfs://127.0.0.1:5978/wc/srcdata
-rw-r--r-- 1 hadoop supergroup 44 2016-04-14 00:58 webhdfs://127.0.0.1:5978/wc/srcdata/word.log方式二导出到xml其他文件查看
命令hdfs oiv -p XML -i xxxx -o xxxx.xmlXML 必须大写
实例hdfs oiv -p XML -i fsimage_0000000000000000162 -o fsimage_0000000000000000162.xml
命令 cat fsimage_0000000000000000162.xml 就能查看内容了。 查看edtis内容
方式与查看fsimage不同
命令hdfs oev -i xxxx -o xxx.xml default xml file
实例hdfs oev -i edits_0000000000000000163-0000000000000000163 -o edits_0000000000000000163-0000000000000000163.xml
命令 cat edits_0000000000000000163-0000000000000000163.xml ?xml version1.0 encodingUTF-8?
EDITSEDITS_VERSION-63/EDITS_VERSIONRECORDOPCODEOP_START_LOG_SEGMENT/OPCODEDATATXID163/TXID/DATA/RECORD
/EDITSSecondaryNameNode(SNN)
-当数据很多时NN的metadate也会很大当matedate写入磁盘时会带来NN机子的IO使用较高给NN增加压力
因而分配一个助手。http://blog.csdn.net/zengmingen/article/details/51115802
Datanode
提供真实文件数据的存储服务。
1、文件块block最基本的存储单元。对于文件内容而言一个文件的长度大小是size那么从文件的0偏移开始按照固定的大小顺序对文件进行划分并编号划分好的每一个块称为一个blockhdfs默认block大小是128MB一个256MB文件共有256/1282个block。
不同于普通文件系统的是HDFS中如果一个文件小于一个数据块的大小并不占用整个数据块存储空间。
hdfs有append追加功能但一般都不用追加会改变block的数量block又有副本成本太高。 2、Replication。多复本。默认是三个。
在hdfs-site.xml的dfs.replication属性 configurationpropertynamedfs.replication/namevalue1/value
/property/configurationwarn
1、如果副本数设置为3但datanode机器只有2台那整个hadoop是不能工作存不了数据的。一个datanode节点不能有两个相同内容的block。
2、启动DataNode线程时会向NameNode汇报block信息。
3、通过向NameNode发送心跳保持与其联系3秒一次如果NameNode 10分钟没有收到DataNode心跳则认为其已经lost并copy其上的block其他DataNode的相同副本到其他DataNode。 Block的副本放置策略
第一个副本放置在上传文件的DataNode上。
如果是集群外提交则随机选择一台磁盘不太满cpu不太忙的机子。
第二个副本放置在第一个副本不同的机架的机子上。
第三个副本放置在与第二个副本相同机架不同机子上。
更多副本随机节点。 数据存储staging HDFS client上传数据到HDFS时会首先在本地缓存数据当数据达到一个block大小时请求NameNode分配一个block。NameNode会把block所在的DataNode的地址告诉HDFS client。HDFS client会直接和DataNode通信把数据写到DataNode节点一个block文件中。 数据存储读文件解析 步骤解析
1、首先调用FileSystem对象的open方法其实是一个DistributedFileSystem的实例。
2、DistributedFileSystem通过RPC获得文件的第一批block的locations同一block按照重复数replication会返回多个locations这些locations按照hadoop拓扑结构排序距离客户端近的排在前面。
3、前两步会返回一个FSDataInputStream对象该对象会被封装成DFSInputStream对象DFSInputStream可以方便的管理datanode和namenode数据流。客户端调用read方法DFSInputStream最会找出离客户端最近的datanode并连接。
4、数据从datanode源源不断的流向客户端。
5、如果第一块的数据读完了就会关闭指向第一块的datanode连接接着读取下一块。这些操作对客户端来说是透明的客户端的角度看来只是读一个持续不断的流。
6、如果第一批block都读完了DFSInputStream就会去namenode拿下一批blocks的location然后继续读如果所有的块都读完这时就会关闭掉所有的流。
warn
1、如果在读数据的时候DFSInputStream和datanode的通讯发生异常就会尝试正在读的block的排第二近的datanode,并且会记录哪个datanode发生错误剩余的blocks读的时候就会直接跳过该datanode。DFSInputStream也会检查block数据校验如果发现一个坏的block,就会先报告到namenode节点然后DFSInputStream在其他的datanode上读该block的镜像。
2、该设计的方向就是客户端直接连接datanode来检索数据并且namenode来负责为每一个block提供最优的datanodenamenode仅仅处理block location的请求这些信息都加载在namenode的内存中hdfs通过datanode集群可以承受大量客户端的并发访问。 数据存储写文件解析 步骤解析
1.客户端通过调用DistributedFileSystem的create方法创建新文件。
2.DistributedFileSystem通过RPC调用namenode去创建一个没有blocks关联的新文件创建前namenode会做各种校验比如文件是否存在客户端有无权限去创建等。如果校验通过namenode就会记录下新文件否则就会抛出IO异常。
3.前两步结束后会返回FSDataOutputStream的对象与读文件的时候相似FSDataOutputStream被封装成DFSOutputStream.DFSOutputStream可以协调namenode和datanode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小packet然后排成队列data quene。
4.DataStreamer会去处理接受data quene他先问询namenode这个新的block最适合存储的在哪几个datanode里参考第二小节比如重复数是3那么就找到3个最适合的datanode把他们排成一个pipeline.DataStreamer把packet按队列输出到管道的第一个datanode中第一个datanode又把packet输出到第二个datanode中以此类推。
5.DFSOutputStream还有一个对列叫ack quene也是有packet组成等待datanode的收到响应当pipeline中的所有datanode都表示已经收到的时候这时akc quene才会把对应的packet包移除掉。
6.客户端完成写数据后调用close方法关闭写入流。
7.DataStreamer把剩余得包都刷到pipeline里然后等待ack信息收到最后一个ack后通知datanode把文件标示为已完成。
warn
如果在写的过程中某个datanode发生错误会采取以下几步
1) pipeline被关闭掉
2)为了防止防止丢包ack quene里的packet会同步到data quene里
3)把产生错误的datanode上当前在写但未完成的block删掉
4block剩下的部分被写到剩下的两个正常的datanode中
5namenode找到另外的datanode去创建这个块的复制。当然这些操作对客户端来说是无感知的。
warn
另外要注意得一点客户端执行write操作后写完得block才是可见的正在写的block对客户端是不可见的只有调用sync方法客户端才确保该文件被写操作已经全部完成当客户端调用close方法时会默认调用sync方法。是否需要手动调用取决你根据程序需要在数据健壮性和吞吐率之间的权衡。