使用ec2数据评估dse 3.1.3 cassandra。
测试设置
5 x m1.xlarge在一个测试中:4vcpus,15g,4x420g示例存储。
5 x hi1.4XL另一个:16vCPU,60g,2x1tb ssd示例存储。
数据
5000多个apache日志文件,~60gb,60mm行。
工作流
通过dse hadoop fs-put加载到cfs中
从带有regexserde的cfs加载到配置单元。
通过键空间日志中的cql在cassandra中创建事件表。
通过insert into logs.event从配置单元插入cassandra。
总的来说,前两个步骤以及基本查询的性能与其他hadoop堆栈相当。能够直接从配置单元中引用cassandra表而不必显式定义外部表是非常好的。
但是,插入操作所花费的时间是其他常见hadoop堆栈的3-4倍。我一定是设置了什么错误,并寻求帮助或建议。
从一个初步的外观来看,很明显,我运行hiveinsert命令的节点的cpu运行速度是12-16,而其他4个节点的cpu运行速度是1-2。而且,写请求都将发送到同一个节点,没有一个发送到其他节点。
我的假设是,hive会将工作分配(向下推)到每个节点,这似乎与常见的hadoop堆栈有关。
否则,密钥是随机的,数据负载在节点间以平衡的方式增长。创建键空间时使用了:
CREATE KEYSPACE logs WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
查看jobtracker/任务详细信息,作业在节点之间被分割。但在status列中,似乎所有对cfs的调用都是通过启动作业的节点路由的。
cfs://10.0.0.21/user/hive/warehouse/event/1:2483027968+67108864
我希望这是一个配置问题。我也愿意接受其他建议。但如果这种方法可以像在其他堆栈上一样工作,那么它无疑是非常简单的。
1条答案
按热度按时间cld4siwp1#
谢谢你的发现,我认为这是代码中的缺陷,我们会修复它。我们可以添加一些配置,以便hive可以使用不同的连接策略。e、 g.随机、循环、粘性