整合Cassandra与Hadoop MapReduce

Cassandra与Hadoop整合 本文采用hadoop1.0.3和Cassandra1.2.0,以Cassandra源码给的WordCount为例说明。关于hadoop与cassandra的相关知识就不废话了,直接进入主题。         Cassandra与Hadoop整合先从cassandra读取数据,进行Map/Reduce,将结果输出到HDFS或Cassandra。         从cassandra读取数 阅读详情

看到这个标题,大家一定会问了。这个整合如何定义?

我个人认为,所谓的整合是指:我们可以编写MapReduce程序,从HDFS中读取数据然后插入到Cassandra中。也可以是直接从Cassandra中读取数据,然后进行相应的计算。

从HDFS中读取数据然后插入到Cassandra中

对于这种类型,我们可以按照以下几个步骤来操作。

1 将需要插入Cassandra的数据上传到HDFS中。

2 启动MapReduce程序。

这种类型的整合其实和Cassandra本身没有什么联系。我们只是运行普通的MapReduce程序,然后在Map或者Reduce端将计算好的数据插入到Cassandra中。仅此而已。

直接从Cassandra中读取数据,然后进行相应的计算

这个功能是在Cassandra0.6.x版本中添加上去的。其可以从Cassandra直接读取MapReduce需要的数据,实现对于Cassandra的全表扫描的功能。

操作步骤如下:

1 在MapReduce程序中指定使用的KeySpace,ColumnFamily,和SlicePredicate等和Cassandra相关的参数。(关于这些概念,可以参考《大话Cassandra数据模型》和《谈谈Cassandra的客户端》)

2 启动MapReduce程序。

这种类型的整合和从HDFS读取数据的整合相比,还是有许多不同的,主要有下面几点区别:

1 输入数据来源不同:前一种是从HDFS中读取输入数据,后一种是从Cassandra中直接读取数据。

2 Hadoop的版本不同:前一种可以使用任何版本的Hadoop,后一种只能使用Hadoop0.20.x

整合Hadoop0.19.x与Cassandra0.6.x

在Cassandra0.6.x中,默认实现的是与Hadoop0.20.x的整合,我们无法直接在Hadoop0.19.x中使用。

所以,要实现这个目标,我们第一步需要做的事情是,修改Cassandra的源代码,提供一个可以在Hadoop0.19.x中使用的功能。

想要进行这项测试,我们可以按照如下步骤来进行:

1 下载修改后的代码。

2 在MapReduce中指定如下内容(注意,这里的class使用的package都是com.alibaba.dw.cassandra.hadoop下面的):

ConfigHelper.setColumnFamily(conf, Keyspace, MemberCF,
                "/home/admin/apache-cassandra-0.6.1/conf");
        SlicePredicate predicate = new SlicePredicate().setColumn_names(Arrays.asList("CITY"
                .getBytes(UTF8), "EMPLOYEES_COUNT".getBytes(UTF8)));
        ConfigHelper.setSlicePredicate(conf, predicate);
        ConfigHelper.setRangeBatchSize(conf, 512);
        ConfigHelper.setSuperColumn(conf, "MemberInfo");

3 确保每一台运行MapReduce的机器的指定目录与MapReduce程序中设定的storage-conf.xml文件路径一致。

4 运行MapReduce程序。

存在的问题与改进

在实际的使用中,我们会发现Map端会出现这样的错误信息:

java.lang.RuntimeException: TimedOutException()
    at com.alibaba.dw.cassandra.hadoop.ColumnFamilyRecordReader$RowIterator.maybeInit(ColumnFamilyRecordReader.java:125)
    at com.alibaba.dw.cassandra.hadoop.ColumnFamilyRecordReader$RowIterator.computeNext(ColumnFamilyRecordReader.java:164)
    at com.alibaba.dw.cassandra.hadoop.ColumnFamilyRecordReader$RowIterator.computeNext(ColumnFamilyRecordReader.java:1)
    at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
    at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
    at com.alibaba.dw.cassandra.hadoop.ColumnFamilyRecordReader.next(ColumnFamilyRecordReader.java:224)
    at com.alibaba.dw.cassandra.hadoop.ColumnFamilyRecordReader.next(ColumnFamilyRecordReader.java:1)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:192)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:176)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:48)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
    at org.apache.hadoop.mapred.Child.main(Child.java:158)
Caused by: TimedOutException()
    at org.apache.cassandra.thrift.Cassandra$get_range_slices_result.read(Cassandra.java:11015)
    at org.apache.cassandra.thrift.Cassandra$Client.recv_get_range_slices(Cassandra.java:623)
    at org.apache.cassandra.thrift.Cassandra$Client.get_range_slices(Cassandra.java:597)
    at com.alibaba.dw.cassandra.hadoop.ColumnFamilyRecordReader$RowIterator.maybeInit(ColumnFamilyRecordReader.java:108)
    ... 11 more

 

引起这样的问题的原因就在于使用Thrift API从Cassandra读取数据失败了。

所以我们可以优化这段代码,提供想要的错误处理功能来提供程序的可用性。

大数据Hadoop运维应用实践——Hbase与hadoop的整合_Hbase的配置安装 本文详细介绍了HBase分布式数据库的配置安装与使用实践。主要内容包括:1. HBase的介绍(是什么?有啥用?优缺点、适用与不适用场景)。2. 版本选型指南:针对不同JDK版本HBase和Hadoop环境提供兼容性矩阵。3. 集群部署实践:包含环境变量配置、JVM参数调优、核心参数(hbase-site.xml)详解,特别强调内存分配(堆内外)、ZK超时、Region分裂等关键配置与高可用配置。最后提供了Ansible自动化批量部署脚本,适合企业级生产环境安装部署HBase参考。 阅读详情

相关推荐

大数据:Apache技术和大数据实践(Hadoop,Spark,Scala,Hbase,Cassandra ...)

大数据:Apache技术和大数据实践(Hadoop,Spark,Scala,Hbase,Cassandra ...)

cassandra数据库入门-2

Cassandra的安装:请参考博客:本章介绍 Cassandra 查询语言 shell 并解释如何使用其命令。默认情况下,Cassandra 提供了一个提示 Cassandra 查询语言 shell (cqlsh),允许用户与其进行通信。使用此 shell,您可以执行 Cassandra 查询语言 (CQL)。使用 cqlsh,您可以 定义模式,插入数据,和执行查询。cqlsh>启动 cqlsh使用命令 cqlsh 启动 cqlsh,如下所示。

长河的博客 1696

银河麒麟V10 SP3离线安装Nginx1.21.5全记录(附11个rpm包下载清单)

本文详细记录了在银河麒麟V10 SP3操作系统上离线安装Nginx 1.21.5的全过程,包括11个必备rpm包的下载清单。通过分步骤的实战指南,帮助用户在国产化环境中高效部署Nginx服务,涵盖安装、配置、调优及故障排查等关键环节,特别适合金融、政务等对安全性要求高的场景。

weixin_30872337的博客 606

Hadoop之(AP):Cassandra介绍

介绍 Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩放性,被Digg、Twitter等知名Web 2.0网站所采纳,成...

fujianmin19910915的博客 1552

Cadence IC617仿真实践:有源电流镜的共模抑制比优化策略

本文基于Cadence IC617平台,详细介绍了有源电流镜共模抑制比(CMRR)的仿真与优化全流程。从电路搭建、DC工作点分析到AC仿真获取差模/共模增益,逐步解析CMRR计算方法。核心优化策略包括提升电流镜输出阻抗、优化差分对匹配性及调整晶体管尺寸,并探讨了与电源抑制比(PSRR)的权衡,为模拟集成电路设计提供实用指南。

weixin_29313817的博客 183

告别拼音!用VSCode+Dosbox-X搞定汇编语言课程设计里的中文姓名显示

本文详细介绍了如何利用VSCode和Dosbox-X解决汇编语言课程设计中中文姓名显示的问题。通过配置开发环境、理解GB2312编码及正确使用汇编指令,学生可以告别拼音显示,实现中文字符的正确输出。文章还提供了完整的代码示例和常见问题排查方法,帮助读者快速掌握这一实用技能。

weixin_30872337的博客 425

cassandra与hadoop整合

cassandra与hadoop的安装就不提了,本文主要介绍cassandra与hadoop的整合。因为关于cassandra与hadoop整合这类的资料在网上基本上找不到,而公司一直在用的就是cassandra数据库,无奈之下只能从官方文档里去找答案。然后发现官方文档有过这方面的介绍,里面提到,在cassandra的源代码里有几个关于整合hadoop的WordCount的代码。果断去源码里找到了

infi 3451

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

《Hadoop生态》——第二章 数据库与数据管理——Cassandra

数据库与数据管理如果你计划用Hadoop,那么你要去管理大量的数据的可能性还是很大的,然后要添加到MapReduce任务中,你可能需要某种数据库。自从Google的BigTable出现以来,Hadoop就已经对数据的管理产生了浓厚的兴趣。虽然已经有一些关系型数据库或者与HDFS数据的SQL接口,比如Hive,Hadoop的许多数据管理都是用non-SQL的技术来存储和访问数据。NoSQL的文档列表超

K.Sun 982

python语言字符串练习题

描述:find()方法检测字符串中是否包含子字符串str,如果指定 beg(开始)和end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串,返回字符串中,子字符串第一个字符的索引值,否则返回-1。描述:find()方法用来检测字符串中是否包含子字符串str,在指定范围内,如果包含子字符串,返回字符串中,子字符串第一个字符的位置,否则返回-1。命令行先后输入两个字符串,然后利用find()方法找出第二个字符串在第一个字符串中出现的位置。本关需要你编写一个程序,输出字符串的长度。

国家一级致癌物 2026

【系统分析师】第2章-基础知识:数学与工程基础(核心总结)

数学与工程基础

数据知道的博客 6814

hadoop合并日志_hadoop 日志处理

EMR弹性低成本离线大数据分析场景描述布式计算框架系统分别为Hadoop、Spark和Storm, Hadoop可以运用在很多商业应用系统,可以轻松集成结构化、半结构化以及非结构化数据集,Spark采用了内存计算,允许数据载入内存作反复查询,融合数据仓库、流处理和图形计算等多种计算范式,Spark能够与Hadoop 很好地...文章小然然2020-01-13137浏览量结合使用Hadoop与Cou...

weixin_39528029的博客 390

槽型光电开关传感器原理图设计,已量产(光电传感器)

在嵌入式设备的位置限位、物料计数等场景中,槽型光电开关是性价比极高的传感器方案 —— 它通过遮挡发射器与接收器之间的光路实现电平切换,电路简单且抗干扰性优于漫反射式光耦。今天分享一个实际项目中落地的槽型光电开关检测电路,从器件选型到逻辑设计都做了简化适配,适合小批量原型或低成本产品的需求。

不脱发的程序猿 719

Brisk——针对低延迟应用与Hadoop/Hive分析的统一大数据平台

\两大主流BigTable开源实现之间的竞争——HBase和Cassandra加速了DataStax推出其新产品,即Brisk,一款基于Cassandra的Hadoop分布式实现。DataStax产品副总裁Ben Werther谈到:\我们的想法是推出一款独一无二的平台,使其既能为“实时”web范围应用提供低延迟数据库,又能利用Hadoop提供的各种各样丰富的数据分析功能。我们从业界所得知的一个需...

cpongo5 217

Robot Framework 7.0 报告解析

本文深入解析 Robot Framework 7.0 新增的 JSON 报告功能,手把手教你如何从 output.xml 转换为结构清晰的 output.json,并通过 Python 脚本提取关键测试指标。文章附完整示例、命令、解析脚本,支持导出为 CSV 和 Markdown,方便接入可视化看板、群通知和 CI 流程。适用于测试自动化、质量平台建设和回归趋势分析场景。

点点寒彬的博客 264

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Spark特性分析

Spark是快速轻量级大规模数据处理引擎 优势: 1, 与hadoop mapReduce相比,内存中处理速度100倍以上,磁盘中10倍以上。 2, 简单易用,快速编写java,scala或者python应用来处理。 3, 通用性强,可以把SQL,streaming和复杂分析结合起来使用。 4, 应用广泛,能运行在hadoop,mesos或者云中,可以获取多样性的数据源,例如hdfs,C

reylee的博客 733

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

spark简单自我介绍

Apache Spark 是大规模数据处理领域一个快速的常见的引擎,以下是Spark的一些特点: 速度:     在内存上运行程序相当于hadoop mapreduce处理的100倍,在磁盘上运行速度是hadoop的10倍 Spark提供一个高级的DAG处理引擎,可以支持循环数据流和内存计算。 容易使用:     使用java,scala,python,r语言可以

跟我一起去征服 880

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Hadoop生态系统未来趋势:Hadoop Ecosystem Table揭示的5大技术方向

Hadoop生态系统作为大数据技术的核心,正持续演进以应对日益复杂的数据处理需求。Hadoop Ecosystem Table项目通过汇总分布式文件系统、NoSQL数据库、SQL-on-Hadoop等多类工具,为我们揭示了Hadoop技术栈的发展脉络和未来趋势。本文将基于该项目数据,深入分析Hadoop生态系统的5大关键技术方向,帮助读者把握行业发展动态。 ## 1. 内存计算框架:从批处理到实

gitblog_00764的博客 1032

大数据系列教程002-初识hadoop

声明:大数据系列教程文章由Java潘老师辛苦原创,免费公开供java爱好者学习。如需转载请获得潘老师授权并保留原文链接,如有疑问或建议,可以联系潘老师: Q:1562691348 V:A1562691348 本教程学习知识储备:Java SE基础、Linux基础、数据库基础 1.Hadoop起源于背景 Hadoop雏形开始于2002年的Apache的Nutch,是一个开源Java 实现的搜索引擎。Nutch的目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,随着抓取的数据量的增.

Java潘老师 435

[O'Reilly精品图书推荐]Hadoop生态系统

本书将Hadoop的生态系统分解为一个个简略的、容易理解的小段内容,以便读者可以快速理解Hadoop项目、子项目及其相关技术是如何一起工作的。

OReillyData 464

hadoop入门--子项目

hadoop发展至今已经是一个庞大的家族,该家族有数十个生命力强盛的子项目,hadoop和这些子项目都在不停的发展中. Hbase Hbase是一个非关系型的数据库,列式数据库,链式存储,查询语言可称为HQL查询语言,Hbase Query Lanaguage. 是Google Bigtable的开源实现,big table是无所不包的大表,所有的表,都能靠3列显示出来,行健+字段名+va

铃铛 1969

Could Cassandra be the first breakout NoSQL database

Years of misunderstanding haven’t been kind to the NoSQL database. Aside from the confusing name (generally u...

95

开源大数据分析工具!

据已经成为现代化企业中重要的宝贵资源。一切决策、策略或者方法都需要依托于对数据的分析方可实现。随着“大数据分析”逐步替代其上代版本,即“商务智能”,企业正面临着一个更加复杂、且商业情报规模更为庞大的新时代。 考虑到现有技术解决方案的复杂性与多样化,企业往往很难找到适合自己的大数据收集与分析工具。然而,混乱的时局之下已经有多种方案脱颖而出,证明其能够帮助大家切实完成大数据分

oqqSSH的博客 1159
上一篇: 介绍Cassandra中的压缩
下一篇: Hadoop基本操作命令
gpcuster
博客等级 码龄21年 297粉丝 99原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值