【问题标题】:Hot spot using hive to insert into Cassandra热点使用 hive 插入 Cassandra
【发布时间】:2013-10-02 19:21:14
【问题描述】:

使用EC2 datastax ami 评估 DSE 3.1.3 Cassandra。

测试设置

  1. 5 x m1.xlarge 一次测试:4vcpus、15G、4x420G 实例 店铺。
  2. 5 x hi1.4xlarge 在另一个:16vcpus,60G,2x1TB SSD 实例存储。

数据

  • 5000+ apache 日志文件,约 60GB,60MM 行。

工作流程

  1. 通过 dse hadoop fs -put 加载到 CFS
  2. 使用 RegexSerDe 从 CFS 加载到 Hive。
  3. 通过键空间日志中的 CQL 在 Cassandra 中创建事件表。
  4. 通过 INSERT INTO logs.event 从 hive 插入 Cassandra。

总体而言,前两个步骤的性能以及基本查询与其他 hadoop 堆栈相当。并且能够直接从 hive 中简单地引用 Cassandra 表而无需显式定义外部表非常棒。

但是,INSERT 操作所用的时间比其他常见的 hadoop 堆栈长 3-4 倍。我一定是设置有问题,正在寻求帮助或建议。

从初步看,很明显我运行 hive INSERT 命令的节点的 cpu 运行在 12-16,而其他 4 个节点显示 1-2 cpu。另外,所有的写请求都发往同一个节点,没有发往其他节点。

我的假设是 hive 会将工作分配(下推)到每个节点,这似乎与常见的 hadoop 堆栈有关。

否则,密钥是随机的,数据负载在节点间以均衡的方式增长。键空间是通过以下方式创建的:

CREATE KEYSPACE logs WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };

查看作业跟踪器/任务详细信息,作业在节点之间拆分。但从状态栏中,似乎所有对 cfs 的调用都通过启动作业的节点进行路由。

cfs://10.0.0.21/user/hive/warehouse/event/1:2483027968+67108864

我希望这是一个配置问题。我也愿意接受其他建议。但是,如果它可以像在其他堆栈上一样工作,那么这种方法肯定非常简单。

【问题讨论】:

    标签: hadoop insert cassandra hive datastax-enterprise


    【解决方案1】:

    感谢您的发现,我认为这是代码中的缺陷,我们会修复它。我们可能会添加一些配置,以便 Hive 可以使用不同的连接策略。例如随机、ROUND_ROBIN、粘性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 2018-12-01
      • 2015-12-31
      • 2015-12-24
      • 2011-08-22
      相关资源
      最近更新 更多