hadoop - 甚至在hadoop/hive上分发数据

标签 hadoop hive

我正在尝试仅2台机器进行小型hadoop设置(用于实验)。我正在加载约13GB的数据,约3,900万行的表,使用Hive的复制因子为1。

我的问题是hadoop总是将所有这些数据存储在单个datanode上。仅当我使用setrep将dfs_replication因子更改为2时,hadoop才会在另一个节点上复制数据。我也尝试过平衡器($HADOOP_HOME/bin/start-balancer.sh -threshold 0)。平衡器意识到需要平衡约5GB的空间。但说:No block can be moved. Exiting...并退出:

2010-07-05 08:27:54,974 INFO org.apache.hadoop.hdfs.server.balancer.Balancer: Using a threshold of 0.0
2010-07-05 08:27:56,995 INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /default-rack/10.252.130.177:1036
2010-07-05 08:27:56,995 INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /default-rack/10.220.222.64:1036
2010-07-05 08:27:56,996 INFO org.apache.hadoop.hdfs.server.balancer.Balancer: 1 over utilized nodes: 10.220.222.64:1036
2010-07-05 08:27:56,996 INFO org.apache.hadoop.hdfs.server.balancer.Balancer: 1 under utilized nodes:  10.252.130.177:1036
2010-07-05 08:27:56,997 INFO org.apache.hadoop.hdfs.server.balancer.Balancer: Need to move 5.42 GB bytes to make the cluster balanced.

Time Stamp               Iteration#  Bytes Already Moved  Bytes Left To Move  Bytes Being Moved
No block can be moved. Exiting...
Balancing took 2.222 seconds

有人可以建议如何在不复制的情况下在hadoop上实现均匀的数据分配吗?

最佳答案

您是否将两台计算机都用作数据节点?可能性很小,但您可以为我确认。

通常,在两台计算机群集中,我希望一台计算机是namenode,另一台计算机是datanode。因此,当您将复制因子设置为1时,数据将被复制到唯一可用的数据节点。如果将其更改为2,它可能会在集群中寻找另一个数据节点以将数据复制到该节点,但找不到它,因此可能会退出。

关于hadoop - 甚至在hadoop/hive上分发数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3185786/

相关文章:

python - 输出翻倍且出现故障

apache-spark - Parquet 表中的TIMESTAMP列CDH5与CDH6

hadoop - 如何在 Apache NiFi 中动态地将值从 executeSQL 传递到 SelectHiveQL

hadoop - Hive 索引无法重建 - DAG 由于顶点故障而失败

hadoop - Hbase 上的 phoenix 和 hive ETL

hadoop - YARN无法添加vcores

hadoop - 如何找到最慢的数据节点?

java - 为什么这个使用 Combiner 类的 Hadoop 示例不能正常工作? (不要执行Combiner提供的 "local reduction")

hadoop - 将Oozie协调器工作流程参数传递给工作流程

hadoop - 在 AWS EMR 上重启 Hive 服务