该页面讨论使用其提供的工具对Hadoop进行基准测试。
顾名思义,NNThroughputBenchmark是一个名称节点吞吐量基准,它在单个节点上针对名称节点运行一系列客户端线程。如果未配置名称节点,它将首先以相同的过程(独立模式)启动名称节点,在这种情况下,每个客户端都通过直接调用相应的名称节点方法来重复执行相同的操作。否则,基准测试将通过客户端协议RPC(远程模式)针对远程名称节点执行操作。无论哪种方式,所有客户端都在单个进程中本地运行,而不是跨不同节点远程运行。原因是避免由RPC连接和序列化引起的通信开销,从而揭示纯名称节点性能的上限。
基准测试首先为每个线程生成输入,以便输入生成开销不会影响结果统计信息。线程执行的操作数实际上是相同的。准确地说,任何两个线程执行的操作数之差不超过1。然后基准测试使用指定数量的线程执行指定的操作数,并通过测量名称-所执行的操作数来输出结果统计信息-每秒节点数。
常规命令行语法为:
hadoop org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark [genericOptions] [commandOptions]
该基准测试表彰了Hadoop命令行通用选项来更改其行为。与其他工具一样,基准测试将依靠fs.defaultFS配置(可通过-fs命令选项覆盖)来运行独立模式或远程模式。如果未指定fs.defaultFS方案或文件(本地),则基准测试将以独立模式运行。特别是,远程名称节点配置dfs.namenode.fs-limits.min-block-size应该设置为16,而在独立模式下,基准测试会关闭其内部名称节点的最小块大小验证。
以下是所有受支持的命令选项:
COMMAND_OPTION | 描述 |
---|---|
-op | 指定操作。必须提供此选项,并且应该是第一个选项。 |
-logLevel | 指定基准测试运行时的日志记录级别。默认日志记录级别为ERROR。 |
-UGCacheRefreshCount | 在每指定次数的操作之后,基准测试将清除名称节点的用户组缓存。默认情况下,从不调用刷新。 |
-keepResults | 如果已指定,请在执行后不要清理名称空间。默认情况下,测试后将删除名称空间。 |
以下是所有受支持的操作以及它们各自的特定于操作的参数(均为可选)和默认值。
OPERATION_OPTION | 特定于操作的参数 |
---|---|
所有 | 其他操作的选项 |
创建 | [ -threads 3 ] [ -files 10 ] [ -filesPerDir 4 ] [ -close ] |
mkdirs | [ -threads 3 ] [ -dirs 10 ] [ -dirsPerDir 2 ] |
打开 | [ -threads 3 ] [ -files 10 ] [ -filesPerDir 4 ] [ -useExisting ] |
删除 | [ -threads 3 ] [ -files 10 ] [ -filesPerDir 4 ] [ -useExisting ] |
fileStatus | [ -threads 3 ] [ -files 10 ] [ -filesPerDir 4 ] [ -useExisting ] |
改名 | [ -threads 3 ] [ -files 10 ] [ -filesPerDir 4 ] [ -useExisting ] |
blockReport | [ -datanodes 10 ] [ -reports 30 ] [ -blocksPerReport 100 ] [ -blocksPerFile 10 ] |
复制 | [ -datanodes 10 ] [ -nodesToDecommission 1 ] [ -nodeReplicationLimit 100 ] [ -totalBlocks 100 ] [ -replication 3 ] |
清洁 | 不适用 |
使用上述操作运行基准测试时,请提供如下所示的特定于操作的参数。
OPERATION_SPECIFIC_OPTION | 描述 |
---|---|
-线程 | 运行相应操作的总线程数。 |
文件 | 相应操作的文件总数。 |
-dirs | 相应操作的总目录数。 |
-filesPerDir | 每个目录的文件数。 |
-关 | 创建后关闭文件。 |
-dirsPerDir | 每个目录的目录数。 |
-利用现有的 | 如果指定,请勿重新创建名称空间,请使用现有数据。 |
-datanodes | 模拟数据节点的总数。 |
-报告 | 要发送的阻止报告总数。 |
-blocksPerReport | 每个报告的块数。 |
-blocksPerFile | 每个文件的块数。 |
-nodesToDecommission | 要停用的模拟数据节点总数。 |
-nodeReplicationLimit | 数据节点的最大传出复制流数。 |
-总块 | 要运行的总块数。 |
复制 | 复制因子。如果大于该值,将调整为数据节点数。 |
基准测试每秒名称节点执行的操作数。具体来说,对于每个测试的操作,它报告以秒为单位的总运行时间(经过时间),操作吞吐量(每秒操作数)和操作的平均时间(平均时间)。越高越好。
以下是通过运行以下命令对远程名称节点打开带有1K线程的100K文件的示例报告。请参阅HDFS可伸缩性:实际基准测试统计数据增长的限制。
$ hadoop org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark -fs hdfs:// nameservice:9000 -op open -threads 1000 -files 100000 -打开输入- nrFiles = 100000 nrThreads = 1000 nrFilesPerDir = 4 -公开数据- #次操作:100000 耗用时间:9510 每秒运算次数:10515.247108307045 平均时间:90