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中的...
在过去的几个月里,我被问过几次,是否有一种方法可以将 CSV 文件导入到 Cassandra 中而无需做太多工作。 有许多不同的策略,但我想我会考虑使用 Spark 来做到这一点。 允许导入 CSV 文件以创建 Spark RDD。 结合这...
Zookeeper在分布式协调中的作用,以及如何解决分布式环境下的数据一致性问题,也可能被提及。 五、数据挖掘 数据挖掘涉及到特征工程、聚类、分类和关联规则挖掘。面试中可能会问到K-means算法的原理,决策树的构建...
1. Hadoop生态系统:在大数据领域,Hadoop是一个分布式存储和计算平台,通常会被问到其核心组件,如HDFS(Hadoop Distributed File System),MapReduce编程模型,以及YARN资源管理器。 2. 数据仓库与数据湖:面试...
在准备面试,特别是针对BAT(百度、阿里巴巴、腾讯)等知名互联网公司时,掌握一系列核心IT知识点至关重要。这个"面试常问80题.zip"压缩包涵盖了多线程、高并发、集合框架、数据库和JVM等关键领域的面试题目,为应聘...
4. **大数据处理工具**:面试官可能会问到ETL(Extract, Transform, Load)过程,以及使用Pig、Hive、Sqoop等工具进行数据处理和迁移的情况。 5. **大数据分析**:可能会讨论数据挖掘、机器学习和人工智能在大数据...
面试中,Spring的相关知识经常被问到,以下是对Spring面试中可能出现的一些专题及其答案的详细解析。 1. **Spring框架概述** - Spring是一个开源的轻量级Java应用框架,它简化了企业级应用的开发,通过IoC(控制...
数据库的并发控制也常被问到,例如锁机制(共享锁、排他锁)和乐观锁、悲观锁的区别,以及MVCC(多版本并发控制)在解决并发问题上的作用。 此外,备份与恢复策略,如全量备份、增量备份和差异备份,以及灾难恢复...
面试官可能会问到什么是大数据,以及大数据的四大特征——Volume(大量)、Velocity(高速)、Variety(多样)和Value(价值)。理解这些基本概念,以及如何在实际项目中应用它们,是展现你对大数据理解深度的关键。...
Java与各种大数据工具的集成是面试中常问的问题。例如,使用Java开发Hadoop MapReduce程序,或者通过Java API操作HBase和Cassandra等。 9. **大数据安全** 随着大数据应用的广泛,数据安全问题日益突出。了解如何...
3. **设计模式与架构**:面试中可能会问到如何在实际项目中应用设计模式,比如单例模式、工厂模式等,以及对微服务、SOA等架构的理解。 4. **数据库知识**:SQL查询是基本要求,面试可能包括编写复杂查询、优化性能...
优化JVM参数设置也是面试中常问的问题。 11. **多线程**:除了并发编程基础外,还需要了解线程安全问题、死锁、活锁、饥饿等问题,以及如何避免和解决这些问题。 以上就是Java面试中可能涉及的主要知识点,每个...
这些模式有助于提高代码的可读性和可维护性,也是面试中常被问到的话题。 数据库交互是许多Java应用的核心部分,因此JDBC(Java Database Connectivity)的使用技巧和最佳实践可能也在讨论范围内。此外,随着NoSQL...
面试官可能会问到如何调优JVM配置以适应大数据处理的性能需求。 再者,对于大数据面试,熟悉多线程和并发编程是关键。Java提供了丰富的并发工具类和并发模型,如ExecutorService、Semaphore、CountDownLatch等,...
面试中可能会问到的问题包括什么是大数据,大数据的特点有哪些,以及大数据与传统数据处理的区别。 接下来,我们需要了解Hadoop生态系统的组件。Hadoop是处理大数据的基石,包括HDFS(分布式文件系统)和MapReduce...