`
longzhun
  • 浏览: 371986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cassandra经常被问到的问题(一)

 
阅读更多

1、为什么不可以设置listen_address为0.0.0.0(意思是监听所有地址)?

Cassandra是一个基于gossip协议的分布式系统,监听地址是用来告诉其它节点来访问的,告诉别的节点说“连接我任何地址都可以”,是一个糟糕的想法,如果集群中不同的节点使用了不同方式的地址,悲剧的事情就要发生了。

如果你不想为你集群中的每个节点单独配置ip(非常可以理解),你可以不配,空着它,Cassandra将会使用InetAddress.getLocalHost()来选择地址,然后只要你或者你的运维团队保证这个是正确的(/etc/hosts/,dns 等等要配置对)。

一个例外是JMX,他默认监听的地址是0.0.0.0(这个是java的bug 6425769)

请看CASSANDRA-256 和 CASSANDRA-43获取这方面更多的细节。

2、cassandra用了哪些端口?

默认Cassandra使用7000作为集群通信端口(如果开启了SSL就是7001端口)。9042端口用于native协议的客户端连接。7199端口用于JMX,9160端口用于废弃的Thrift接口。内部节点通信以及native协议的端口在cassandra配置文件里可以配置。JMX端口可以在cassandra-env.sh配置(通过JVM的参数)。所有端口都是TCP的。

3、当往集群中增加新节点的时候,对于存在的数据发生了什么?

当一个新节点加入到集群,它将会自动连接集群中的其它节点,并且去复制正确的数据到本地,同样的增加、替换、移动、删除节点都是这样的。

4、我删除了数据,但是磁盘使用率没有变化,这是为什么?

写入到cassandra里的数据会被持久化到SSTable文件里,SSTable文件是不可改变的,也就是说当你执行删除的时候,数据不会从文件中被去除掉的。相反,一个标记(也叫tombstone)会被写入用于标记对应记录的新状态。不用担心,当数据和tombstone发生第一次compaction的时候,数据会被删除掉,相应的磁盘空间也被回收,你可以了解关于Compaction的更多细节。

5、为什么用nodetool ring只能看到一条记录? 即便所有节点输出的日志里可以看出,他们都发现彼此加入到了这个ring。

这个发生于你的所有节点都配了通用的token,不要这么做。

这经常发生于哪些使用VM部署cassandra的用户,(特别是使用Debian package,它会在安装完自动启动cassandra,所以会生成token并保存它。),安装好后就把VM整个克隆出另外的节点。

增很容易修复,只要把数据目录以及commitlog目录删除,然后保证每个节点是随机生成的token,再启动就可以了。

6、我可以修改一个正在运行中的集群中的keyspace的副本因子吗?

可以,但是修改后需要执行repair或者cleanup来改变已存数据的副本个数。

首先使用cqlsh修改目标keyspace的副本因子。
如果你是减少副本因子,你可以执行nodetool cleanup去删除多余的副本数据,对每个节点都要执行。

如果你是增加副本因子,你需要执行nodetool repair来保证数据的副本个数满足当前的配置。 Repair只要对每个副本集执行一次即可。这是个敏感的操作,这会影响集群的性能。强烈建议执行rolling repair,因为试图一次修复整个集群的话,那可能是个坑。

7 可以使用cassandra存储大的二进制字段吗?

Cassandra并没有对存储大文件或者二进制,以及这样一个二进制数据被经常读,也就是整个发送到客户端的情况进行优化。因为存储小的二进制数据(小于1MB)应该不是问题。但是还是建议把大的二进制数据分隔成小块。

需要特别注意的是,任何大于16MB的值,将被Cassandra拒绝掉,这是由max_mutation_size_in_kb配置项决定的(这个配置项默认是commitlog_segment_size_in_mb的一半,commitlog_segment_size_in_mb默认是32M)。

8、Nodetool连接远程服务器的时候,提示“Connection refused to host: 127.0.1.1” ,这是为什么?

nodetool依赖JMX,JMX依赖RMI。RMI在两端通信的时候会根据需要创建自己的listenners和connectors。通常,这些都是底层透明的,但是不正确的hostname解析,无论是在连接方还是被连接方,都会导致错乱和这样的拒绝异常。

如果你在使用DNS。确保两端机器的/etc/hosts文件是正确的。如果还是失败的,你可以尝试通过jvm选项-Djava.rmi.server.hostname=指定你要连接的远程机器名称给JMX接口,配置项大体在cassandra-env.sh文件的靠下的位置。

分享到:
评论

相关推荐

    使用Spark+Cassandra打造高性能数据分析平台

    自本期《问底》,许鹏将结合实际实践,带大家打造一个由Spark和Cassandra组成的大数据分析平台。笔者在源码阅读的过程中秉持着一种非常简单的思维模式,就是努力去寻找一条贯穿全局的主线索。在笔者看来,Spark中的...

    datastax-spark-csv-importer:示例项目展示了如何使用 Spark 将 CSV 文件导入到 Cassandra 表中

    在过去的几个月里,我被问过几次,是否有一种方法可以将 CSV 文件导入到 Cassandra 中而无需做太多工作。 有许多不同的策略,但我想我会考虑使用 Spark 来做到这一点。 允许导入 CSV 文件以创建 Spark RDD。 结合这...

    大数据面试题---.rar

    Zookeeper在分布式协调中的作用,以及如何解决分布式环境下的数据一致性问题,也可能被提及。 五、数据挖掘 数据挖掘涉及到特征工程、聚类、分类和关联规则挖掘。面试中可能会问到K-means算法的原理,决策树的构建...

    大数据技术之高频面试题

    1. Hadoop生态系统:在大数据领域,Hadoop是一个分布式存储和计算平台,通常会被问到其核心组件,如HDFS(Hadoop Distributed File System),MapReduce编程模型,以及YARN资源管理器。 2. 数据仓库与数据湖:面试...

    面试常问80题.zip

    在准备面试,特别是针对BAT(百度、阿里巴巴、腾讯)等知名互联网公司时,掌握一系列核心IT知识点至关重要。这个"面试常问80题.zip"压缩包涵盖了多线程、高并发、集合框架、数据库和JVM等关键领域的面试题目,为应聘...

    大数据面试录音03.zip

    4. **大数据处理工具**:面试官可能会问到ETL(Extract, Transform, Load)过程,以及使用Pig、Hive、Sqoop等工具进行数据处理和迁移的情况。 5. **大数据分析**:可能会讨论数据挖掘、机器学习和人工智能在大数据...

    Spring面试专题及答案

    面试中,Spring的相关知识经常被问到,以下是对Spring面试中可能出现的一些专题及其答案的详细解析。 1. **Spring框架概述** - Spring是一个开源的轻量级Java应用框架,它简化了企业级应用的开发,通过IoC(控制...

    数据库_面试_数据库_

    数据库的并发控制也常被问到,例如锁机制(共享锁、排他锁)和乐观锁、悲观锁的区别,以及MVCC(多版本并发控制)在解决并发问题上的作用。 此外,备份与恢复策略,如全量备份、增量备份和差异备份,以及灾难恢复...

    大数据面试题及面试经验分享.zip

    面试官可能会问到什么是大数据,以及大数据的四大特征——Volume(大量)、Velocity(高速)、Variety(多样)和Value(价值)。理解这些基本概念,以及如何在实际项目中应用它们,是展现你对大数据理解深度的关键。...

    java-大数据基础面试思考.zip

    Java与各种大数据工具的集成是面试中常问的问题。例如,使用Java开发Hadoop MapReduce程序,或者通过Java API操作HBase和Cassandra等。 9. **大数据安全** 随着大数据应用的广泛,数据安全问题日益突出。了解如何...

    面试经典问答双语版(一)

    3. **设计模式与架构**:面试中可能会问到如何在实际项目中应用设计模式,比如单例模式、工厂模式等,以及对微服务、SOA等架构的理解。 4. **数据库知识**:SQL查询是基本要求,面试可能包括编写复杂查询、优化性能...

    Java面试题库与答案解析

    优化JVM参数设置也是面试中常问的问题。 11. **多线程**:除了并发编程基础外,还需要了解线程安全问题、死锁、活锁、饥饿等问题,以及如何避免和解决这些问题。 以上就是Java面试中可能涉及的主要知识点,每个...

    Java夜未眠程序员的心声

    这些模式有助于提高代码的可读性和可维护性,也是面试中常被问到的话题。 数据库交互是许多Java应用的核心部分,因此JDBC(Java Database Connectivity)的使用技巧和最佳实践可能也在讨论范围内。此外,随着NoSQL...

    大数据面试相关及真实简历参考

    面试官可能会问到如何调优JVM配置以适应大数据处理的性能需求。 再者,对于大数据面试,熟悉多线程和并发编程是关键。Java提供了丰富的并发工具类和并发模型,如ExecutorService、Semaphore、CountDownLatch等,...

    教你如何迅速秒杀掉:99%的海量数据处理面试题 .zip

    面试中可能会问到的问题包括什么是大数据,大数据的特点有哪些,以及大数据与传统数据处理的区别。 接下来,我们需要了解Hadoop生态系统的组件。Hadoop是处理大数据的基石,包括HDFS(分布式文件系统)和MapReduce...

Global site tag (gtag.js) - Google Analytics