【问题标题】:hadoop replication factor confusionhadoop 复制因子混淆
【发布时间】:2014-05-22 06:48:09
【问题描述】:

我们有 3 个用于 hadoop 复制的设置,即:

dfs.replication.max = 10
dfs.replication.min = 1
dfs.replication     = 2

所以 dfs.replication 是 hadoop 集群中文件的默认复制,直到 hadoop 客户端使用“setrep”手动设置它。 并且 hadoop 客户端可以将最大复制设置为 dfs.replication.mx

dfs.replication.min 用于两种情况:

  1. 在安全模式下,它会检查块的复制是否达到 dfs.replication.min
  2. dfs.replication.min 是同步处理的。其余的 dfs.replication-dfs.replication.min 被异步处理。

所以我们必须在每个节点上设置这些配置(namenode+datanode)还是只在客户端节点上?

如果上述三个设置在不同的数据节点上有所不同怎么办?

【问题讨论】:

    标签: hadoop


    【解决方案1】:

    不能为集群中的任何特定节点设置复制因子,您可以为整个集群/目录/文件设置它。 dfs.replication 可以在 hdfs-sie.xml 中运行集群中更新。

    为文件设置复制因子-hadoop dfs -setrep -w <rep-number> file-path

    或者为目录或整个集群递归地设置它-hadoop fs -setrep -R -w 1 /

    使用最小和最大代表因子-

    1. 在将数据写入数据节点时,许多数据节点可能会失败。如果写入了dfs.namenode.replication.min 副本,则写入操作成功。 Post to write操作异步复制块直到达到dfs.replication级别。

    2. 最大复制因子dfs.replication.max 用于设置块的复制限制。用户在创建文件时不能将块复制设置为超过限制。

    3. 您可以为流行文件块设置高复制因子,以分散集群上的读取负载。

    【讨论】:

    • 那么我必须在 (namenode+datanode) 上或仅在 namenode 或所有数据节点上设置配置参数吗?我们正在使用 hive 进行数据加载活动,那么我们如何为流行文件块设置高复制因子以将读取负载分配到集群上。?
    • 默认块的复制配置,您可以在 hdfs-site.xml 中更新,这是一次集群级别的配置。如果您必须更新 hive 表的复制,则在 HDFS 中找到表位置(默认 /user/hive/warehouse..)并通过命令更改复制-hadoop fs -setrep -R -w rep-num /user/hive /warehouse/xyz_table
    • 我们是否有一些用于 hive 的配置参数,可以使该表的复制可配置?例如 hive -e "some query" -hiveconf some.configuration.parameter
    • 我在 HiveConf 上没有遇到任何这样的配置。所有 hadoop 命令都可以从 Hive CLI 运行。例如hive> dfs -setrep -w 文件路径.... 或 $hive -e "dfs -setrep -w 文件路径"
    • dfs.replication.min 不是仅在安全模式下使用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 2016-06-04
    相关资源
    最近更新 更多