c语言sscanf函数的用法是什么
412
2022-11-20
调整 NameNode 堆内存
每个工作负载都有一个唯一的字节分布配置文件。一些工作负载可以使用默认 JVM 设置进行堆内存和垃圾收集,但其他工作负载需要调整。如果动态堆设置导致瓶颈,本主题提供有关调整 NameNode JVM 大小的指南。
所有 Hadoop 进程都在 Java 虚拟机 (JVM) 上运行。JVM 的数量取决于您的部署模式:
本地(或独立)模式 - 没有守护程序,一切都在单个 JVM 上运行。伪分布式模式 - 每个守护进程(例如 NameNode 守护进程)在单个主机上的自己的 JVM 上运行。分布式模式 - 每个守护进程在其自己的 JVM 上跨主机集群运行。
标准 NameNode 配置是一个用于整个命名空间的活动(和主)NameNode,一个用于检查点(但不是故障转移)的辅助 NameNode 。高可用性配置将辅助 NameNode 替换为备用 NameNode,以防止单点故障。每个 NameNode 都使用自己的 JVM。
环境变量
HADOOP_HEAPSIZE设置所有Hadoop 项目服务器(如 HDFS、YARN 和 MapReduce)的 JVM 堆大小。HADOOP_HEAPSIZE是作为最大内存 (Xmx) 参数传递给 JVM 的整数。例如:
HADOOP_HEAPSIZE=1024
HADOOP_NAMENODE_OPTS特定于 NameNode 并设置所有必须指定的 JVM 标志。HADOOP_NAMENODE_OPTS会覆盖 NameNode 的HADOOP_HEAPSIZE Xmx 值。例如:
HADOOP_NAMENODE_OPTS=-Xms1024m -Xmx1024m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:+PrintTenuringDistribution -XX:OnOutOfMemoryError={{AGENT_COMMON_DIR}}/killparent.sh
HADOOP_NAMENODE_OPTS和HADOOP_HEAPSIZE都存储在/etc/hadoop/conf/hadoop-env.sh.
监控堆内存使用情况
您可以通过多种方式监控堆内存使用情况:
Cloudera Manager:查看 NameNode 图表了解堆内存使用情况。如果您需要从头开始构建图表,请运行:选择 jvm_max_memory_mb、jvm_heap_used_mb 其中 roleType="NameNode"NameNode Web UI:向下滚动到摘要并查找“使用的堆内存”。命令行:生成堆转储。
文件和块
在 HDFS 中,数据和元数据是解耦的。数据文件被分割成块文件,这些块文件在集群中的 DataNode 上存储和复制。文件系统命名空间树和相关元数据存储在 NameNode 上。
命名空间对象是指向 DataNode 上的块文件的文件 inode 和块。这些命名空间对象作为文件系统映像 (fsimage) 存储在 NameNode 的内存中,并在本地保存。对元数据的更新将写入编辑日志。当 NameNode 启动或检查点时,应用编辑,清除日志,并创建一个新的 fsimage。重要提示: NameNode 将整个命名空间图像保存在内存中。辅助 NameNode在其自己的 JVM 上,在创建图像检查点时执行相同的操作。
平均而言,每个文件消耗 1.5 个存储块。也就是说,平均文件被分成两个块文件——一个消耗整个分配的块大小,另一个消耗一半。在 NameNode 上,同样的平均文件需要三个命名空间对象——一个文件 inode 和两个块。
磁盘空间与命名空间
CDH 默认块大小 ( dfs.blocksize ) 设置为 128 MB。NameNode 上的每个命名空间对象消耗大约 150 个字节。
在 DataNode 上,数据文件是通过消耗的磁盘空间(实际数据长度)来衡量的,而不一定是完整的块大小。例如,一个 192 MB 的文件占用 192 MB 的磁盘空间,而不是块大小的整数倍。使用 128 MB 的默认块大小,将 192 MB 的文件拆分为两个块文件,一个 128 MB 文件和一个 64 MB 文件。在 NameNode 上,命名空间对象是通过文件和块的数量来衡量的。相同的 192 MB 文件由三个命名空间对象(1 个文件 inode + 2 个块)表示,并消耗大约 450 字节的内存。
大文件分成较少的块通常比生成许多块的小文件消耗更少的内存。一个 128 MB 的数据文件由 NameNode 上的两个命名空间对象(1 个文件 inode + 1 个块)表示,并消耗大约 300 字节的内存。相比之下,128 个 1 MB 的文件由 256 个命名空间对象(128 个文件 inode + 128 个块)表示,占用大约 38,400 个字节。因此,最佳分割大小是块大小的整数倍,用于内存管理和数据局部性优化。
默认情况下,Cloudera Manager 为每百万个块分配最大 1 GB 的堆空间(但绝不会少于 1 GB)。您实际需要多少内存取决于您的工作负载,尤其是每个命名空间中生成的文件、目录和块的数量。如果所有文件都按块大小进行拆分,则可以为每百万个文件分配 1 GB 。但考虑到每个文件 1.5 个块(2 个块对象)的历史平均值,更保守的估计是每百万块1 GB 内存。
重要提示: Cloudera 建议每百万块使用 1 GB 的 NameNode 堆空间来解决命名空间对象、必要的簿记数据结构和远程过程调用 (RPC) 工作负载。在实践中,您的堆需求可能会低于这个保守估计。
复制
默认的块复制因子 ( dfs.replication ) 为 3。复制会影响磁盘空间,但不会影响内存消耗。复制会更改每个块所需的存储量,但不会更改块的数量。如果 DataNode 上的一个块文件,由 NameNode 上的一个块表示,被复制了 3 次,则块文件的数量增加了三倍,但代表它们的块的数量没有增加。
关闭复制后,一个 192 MB 的文件会占用 192 MB 的磁盘空间和大约 450 字节的内存。如果您有 100 万个这些文件,或者 192 TB 的数据,则需要 192 TB 的磁盘空间,并且在不考虑 RPC 工作负载的情况下,需要 450 MB 的内存:(100 万 inode + 200 万块)* 150 字节。启用默认复制后,您需要 576 TB 的磁盘空间:(192 TB * 3) 但内存使用量保持不变,为 450 MB。当您考虑到簿记和 RPC 并遵循每百万块 1 GB 堆内存的建议时,这种情况下更安全的估计是 2 GB 内存(有或没有复制)。
例子
示例 1:估计使用的 NameNode 堆内存
Alice、Bob 和 Carl 在磁盘上各有 1 GB (1024 MB) 的数据,但被分割成不同大小的文件。Alice 和 Bob 的文件是块大小的一部分,并且需要最少的内存。Carl 没有,并用不必要的命名空间对象填充堆。
Alice:1 x 1024 MB 文件
1个文件inode8 个块(1024 MB / 128 MB)
总计 = 9 个对象 * 150 字节 = 1,350 字节的堆内存鲍勃:8 x 128 MB 文件
8 个文件 inode8块
总计 = 16 个对象 * 150 字节 = 2,400 字节的堆内存卡尔:1,024 x 1 MB 文件
1,024 个文件 inode1,024 个区块
总计 = 2,048 个对象 * 150 字节 = 307,200 字节的堆内存
示例 2:估计所需的 NameNode 堆内存
在这个例子中,内存是通过考虑集群的容量来估计的。值是四舍五入的。两个集群物理存储 4800 TB,或大约 3600 万个块文件(默认块大小)。复制确定有多少命名空间块代表这些块文件。
集群 A:200 台主机,每台 24 TB = 4800 TB。
块大小=128 MB,复制=1集群容量(MB):200 * 24,000,000 MB = 4,800,000,000 MB (4800 TB)每块所需的磁盘空间:每块 128 MB * 1 =每块128 MB存储空间以块为单位的集群容量:4,800,000,000 MB / 128 MB =36,000,000 个块
在容量上,建议为每百万块分配 1 GB 内存,集群 A 需要 36 GB 的最大堆空间。集群 B:200 台主机,每台 24 TB = 4800 TB。
块大小=128 MB,复制=3集群容量(MB):200 * 24,000,000 MB = 4,800,000,000 MB (4800 TB)每块所需的磁盘空间:每块 128 MB * 3 =每块384 MB存储空间以块为单位的集群容量:4,800,000,000 MB / 384 MB =12,000,000 个块
在容量上,建议为每百万块分配 1 GB 内存,集群 B 需要 12 GB 的最大堆空间。
集群 A 和集群 B 都存储相同数量的块文件。然而,在集群 A 中,每个块文件都是唯一的,并且由 NameNode 上的一个块表示;在集群 B 中,只有三分之一是唯一的,三分之二是副本。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~