Hadoop3  NameNode 和 SecondaryNameNode工作流程 NN 和 2NN 工作机制思考:NameNode 中的元数据是存储在哪里的?     首先,我们做个假设,如果存储在 NameNode 节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的FsImage。这样又会带来新的问题,当在内存中的元数据更新时,如果同时更新 FsImage,就会导致效率过低,但如果不更新,就会发生一致性问题,一旦 NameNode 节点断电,就会产生数据丢失。因此,引入 Edits 文件(只进行追加操作,效率很高)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到 Edits 中。这样,一旦 NameNode 节点断电,可以通过 FsImage 和 Edits 的合并,合成元数据。       但是,如果长时间添加数据到 Edits 中,会导致该文件数据过大,效率降低,而且一旦断电,恢复元数据需要的时间过长。因此,需要定期进行 FsImage 和 Edits 的合并,如果这个操作由NameNode节点完成,又会效率过低。因此,引入一个新的节点SecondaryName...
Hadoop HDFS 写数据流程(1)客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件,NameNode 检查目标文件是否已存在,父目录是否存在。(2)NameNode 返回是否可以上传。(3)客户端请求第一个 Block 上传到哪几个 DataNode 服务器上。(4)NameNode 返回 3 个 DataNode 节点,分别为 dn1、dn2、dn3。 (5)客户端通过 FSDataOutputStream 模块请求 dn1 上传数据,dn1 收到请求会继续调用dn2,然后 dn2 调用 dn3,将这个通信管道建立完成。(6)dn1、dn2、dn3 逐级应答客户端。(7)客户端开始往 dn1 上传第一个 Block(先从磁盘读取数据放到一个本地内存缓存),以 Packet 为单位,dn1 收到一个 Packet 就会传给 dn2,dn2 传给 dn3;dn1 每传一个 packet会放入一个应答队列等待应答。(8)当一个 Block 传输完成之后,客户端再次请求 NameNode 上传第二个 Block 的服务器。(重复执行 3-7 步)。Hadoop HDFS 读数据流程 (1)客户端通过 DistributedFileSystem 向 NameNode 请求下载文件,NameNode 通过查询元数据,找到文件块所在的 DataNode 地址。(2)挑选一台 DataNode(就近原则,然后随机)服务器,请求读取数据。(3)DataNode 开始传输数据...
 
0

HDFS 文件块大小设置

发表者:admin分类:大数据2021-04-28 14:54:52 阅读[3352]
 Hadoop HDFS 文件块大小
HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksiz)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M。
1)集群中的block
2)如果寻址时间约为10ms,即查找到目标block的时间为
blockd 10ms。
3)寻址时间为传输时间的1%时,则为最佳状态。(专家) 因此,传输时间=10ms/0.01=1000ms=1s,4)而目前磁盘的传输速率普遍为100MB/s。 
5 block大小=1s*100MB/s=100MB
思考∶为什么块的大小不能设置太小,也不能设置太大 ?
(1)HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置;
(2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。
总结∶ HDFS块的大小设置主要取决于磁盘传输速率。
filebeat + logstash 对message提取指定字段 说明 filebeat中message要么是一段字符串,要么在日志生成的时候拼接成json然后在filebeat中指定为json。但是大部分系统日志无法去修改日志格式,filebeat则无法通过正则去匹配出对应的field,这时需要结合logstash的grok来过滤,架构如下: 实例说明: 以系统登录日志格式为例: 登录成功日志 Jan 6 17:11:47 localhost sshd[3324]: Received disconnect from 172.16.0.13: 11: disconnected by userJan 6 17:11:47 localhost sshd[3324]: pam_unix(sshd:session): session closed for user rootJan 6 17:11:48 localhost sshd[3358]: Address 172.16.0.13 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!Jan 6 17:11:51 localhost sshd[3358]: Accepted password for root from 172.16.0.13 port 38604 ssh2Jan 6 17:11:51 localhost sshd[3358]: pam_unix(sshd:session): session opened for user root by (uid=0) 登录失败日志 Jan 6 17:13:10 localhost sshd[3380]: pam_unix(sshd:auth): authentication failure; logname=...
 Elasticsearch:借助GeoIP数据库来实现显示请求来源的地理位置​借助GeoIP数据库来实现显示请求来源的地理位置,GeoIP 库可以根据 IP 地址提供对应的地域信息,包括国别,省市,经纬度等。获取GeoIP数据库wget https://raw.githubusercontent.com/wp-statistics/GeoLite2-City/master/GeoLite2-City.mmdb.gz wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz gzip -d GeoLite2-City.mmdb.gz 配置:filter{      geoip{             source=>"client_ip"             fields=>[            "city_name",           "country_name",           "continent_code",           "continent_name"             ]         database=>"/etc/logstash/GeoLite2-City.mmdb"...
基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化 1、需求 有一批特定用途(文末揭晓)的 IP 地址。 想通过地图形式可视化展示 IP 地址对应的经纬度坐标的分布。 2、方案探讨 基础方案如下: 第一步:IP 地址转经纬度坐标。 实现借助第三方工具:https://ipstack.com/ 第二步:经纬度坐标借助可视化工具(如:echarts)渲染展示。 这时候不免进一步思考: 有没有更快捷的方案呢?ELK 能实现不? 已知的知识点: Elasticsearch 支持 Geo-point、Geo-shape 数据类型。 Kibana 支持 Coordinate Map(坐标图)、Region Map(区域地图)可视化地图展示。 两个已知知识点一整合不就是基于 Elasticsearch + Kibana 的可视化展示方案吗? 且慢,有没有更快捷的 IP 地址转经纬度坐标的信息呢? 有的。Ingest 数据预处理管道的 GeoIP processor (处理器)就能达到这个目的。 整体架构图如下图所示: 3、GeoI...
logstash将两个field字段合并成一个field字段方法格式化一个日志,日期不好取,分成了两个字段。后来date又支持一个字段date {      match => ["time", "yyyy-MM-dd HH:mm:ss.SSS" ]    }mutate的merger没用,时把两个字段合成数组了。最后找到了方案,用alteralter{      add_field => { "fullTime" => "%{day} %{time}" }    }然后日期完美转换    date {      match => ["fullTime", "yyyy-MM-dd HH:mm:ss.SSS" ]    } 原文链接:https://blog.csdn.net/u011870280/article/details/80019976
使用kibana7创建elastic7的采集节点管理-数据预处理管道GeoIP processor GeoIp processor 根据来自 Maxmind 数据库的数据添加有关IP地址地理位置的信息。 默认情况下,GeoIp processor 将此信息添加到 geoip 字段下。GeoIp processor 可以解析 IPv4 和 IPv6 地址. Elasticsearch7已经自带插件。 1,创建管理并填写名称,这里填写geoip。 2,添加处理器,选择一个处理器,这里应是Geoip,然后填写要转换的索引字段,这里填写IP。 3,最后点 添加,保存。 4,最后可以查看管道信息:   可以使用GET _ingest/pipeline/geoip_pipe  5,可以 创建一个索引作测试。 具体看 https://www.yjlink.cc/?id=2460
filebeat7.10+logstash7.10+Elastic7.10+kibana7.10收集centos系统ssh日志IP并将IP地图化展示 1,配置信息如下: IP 系统 JDK Eastic Filebeat logstash Kibana 192.168.137.30 Centos7 openjdk-11 elastic7.10 ------ logstash7.10 Kibana7.10 192.168.137.26 Centos7 openjdk-11 ...
ES7+kibana7解决geoip的location不为geo_point格式,无法建可视化地图 by: 铁乐猫   环境: ELK各组件均为7.0版本 出现问题的索引名称为tielemao_web_log* 问题: 使用了geoip插件,入库的索引中location仍不是geo_point格式,以致想做地图经纬度的展示时做不了。 原因: 默认的log_template模板中没有任何匹配。 解决办法: 新建索引模板,设置匹配成geo_point,且优先度调高。 另外为防以后新项目入log重新碰到这个问题,将默认的log_template模板也加上geo_point的相关设置。 以下方法索引模板是旧版本的,可以直接在kibana中建新版本的索引模板。 默认索引模板添加geoip映射 ...
    总共9页,当前第4页 | 页数:
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9