search
HomeDatabaseMysql Tutorial[译]Cassandra 架构简述

本文翻译主要来自Datastax的cassandra1.2文档。。此外还有一些来自于相关官方博客。 该翻译作为实验室大数据组的学习材料的一部分,适合对Cassandra已经有一定了解的读者。 未经本人许可,请勿转载。 。(下文有时候又将Cassandra简称C) Cassandra被设计来

本文翻译主要来自Datastax的cassandra1.2文档。。此外还有一些来自于相关官方博客。

该翻译作为实验室大数据组的学习材料的一部分,适合对Cassandra已经有一定了解的读者。

未经本人许可,请勿转载。

。(下文有时候又将Cassandra简称C)

Cassandra被设计来通过没有单点故障的多节点模式去处理海量数据工作负载。他的架构是基于 理解系统和硬件故障可以而且会发生 的基础上的。C通过所有节点都相同并且数据分布在所有节点上的p2p分布式系统来解决故障问题。集群中的每个节点每秒都在交换信息。每个节点上的commit log 捕获写行为来确保数据的持久化。数据也会被写到一个内存结构中,叫做memtable,然后当内存结构满了的时候就写数据到磁盘文件中,叫做SSTable。所有的写入都是自动分区和复制的。

cassandra是一种面向行的数据库。C的架构允许任何授权的用户连接任意数据中心的任意的节点,并使用cql访问数据。为了简化使用,cql使用和sql类似的语法。从cql的视角出发,database是由tables组成的。典型地,一个集群中 每个应用拥有一个keyspace。开发者可以通过cqlsh调用cql,也可以使用其他驱动。

客户端的读写请求可以到达集群的任意节点。当一个客户连接到一个节点做了一个请求时,那个节点服务器就作为这个特定的客户操作的一个了。协调器扮演了客户应用和拥有用户请求的数据的节点之间的代理(proxy)的角色。协调器决定了集群环中的哪些节点应该响应请求。(更多信息,请查阅关于用户请求)

配置C的关键组件列表:

  • Gossip:一个p2p的交流协议来发现和共享其他节点的位置和状态信息。
    gossip信息也被每个节点保存在本地,这样当一个节点重启时,它能够立刻使用这些信息。你可能会想清空某个节点上的gossip历史,比如节点ip地址改变了等原因。(译者注:大概就是system.local表)
  • Partitioner:一个分区器决定了如何分布数据到各个节点。选择一个分区器决定了哪个节点存储数据的第一个备份。
    你必须设置分区器的类型,并且指派给每个节点一个num_tokens值。如果没有使用虚拟节点的话,美国空间,使用initial_token来代替。(译者注:虚拟节点是1.2中新增的)
  • 副本存放策略:C存储数据的备份到多个节点上去来确保可用性和故障容忍。一个备份策略决定了哪些节点存放备份。it is not unique in any sense.it is not unique in any sense. 当你创建了一个keyspace的时候,你必须指定副本存放策略和你想备份的数量。
  • Snitch:一个snitch定义了拓扑信息,这些信息是副本备份侧罗和请求路由时经常使用的。当你创建一个集群的时候需要配置一个snitch。snitch is responsible for 知道在你的网络拓扑中节点的位置 以及通过聚合机器成为数据中心或者rack时的分配副本。
  • cassandra.yaml:C的配置文件。在这个文件中,你要设置集群的初始化信息,表的缓存参数,资源的使用参数,超时设置,客户端连接,备份以及安全策略。
  • C将属性都存到系统keyspace中。你需要对每一个keyspace或者columnfamily进行存储配置(比如使用cql)。
    默认的,美国空间,一个节点被设置为存储他管理的数据到/var/lib/cassandra目录。在一个生产环境中,你需要修改commitlog目录到一个其他硬盘上去(别和data file 在一个硬盘上)。
  • (该翻译作为实验室大数据组的学习材料的一部分,适合对Cassandra已经有一定了解的读者。未经本人许可,请勿转载。)

    cassandra使用称为gossip的协议来发现加入C集群中的其他节点的位置和状态信息。这是一个p2p的交流协议,每个节点定期的交换他们自己的和他们所知道的其他人的状态信息。gossip进程每秒都在进行,并与至多三个节点交换状态信息。节点交换他们自己和所知道的信息,于是所有的节点很快就能学习到整个集群中的其他节点的信息。gossip信息有一个相关的版本号,于是在一次gossip信息交换中,旧的信息会被新的信息覆盖重写。

    要阻止分区进行gossip交流,那么在集群中的所有节点中使用相同的seed list(译者注:指的是cassandra。yaml中的seeds)。默认的,在重新启动时,一个节点记得他曾经gossip过得其他节点。

    注意:种子节点的指定除了启动起gossip进程外,没有其他的目的。种子节点不是一个单点故障,他们在集群操作中也没有其他的特殊目的,除了引导节点以外..

    设置Gossip设置

    任务:

    当一个节点第一次启动的时候,他去yaml中读取配置,得到集群的名字,并得到从哪些seeds中获取其他节点的信息,还有其他的一些参数,服务器空间,比如端口,范围等等。。

    属性 描述

    cluster_name  

    listen_address 与其他节点连接的ip

    seed_provider  

    storage_port 内部节点交流端口(默认7000),每个节点之间必须相同

    initial_token 在1.1以及之前,决定节点的数据的管理范围

    num_tokens 在1.2以及之后,决定节点的数据的管理范围

     

    清理gossip状态:

    -Dcassandra.load_ring_state= false 关于故障检测和修复C使用信息来避免路由用户的请求到坏了的节点(C还能避免路由到可用但是性能很差的节点,通过动态snitch技术)Rather than have a fixed threshold for marking failing nodes, Cassandra uses an accrual detection mechanism to calculate a per-node threshold that takes into account network performance, workload, or other conditions. During gossip exchanges, every node maintains a sliding window of inter-arrival times of gossip messages from other nodes in the cluster. In Cassandra, configuring the property adjusts the sensitivity of the failure detector. Use default value for most situations, but increase it to 12 for Amazon EC2 (due to the frequently experienced network congestion).(译者注:这是04年的一篇论文的失效检测算法

    1.Hayashibara, N., Defago, X., Yared, R. & Katayama, T. The phi; accrual failure detector. in Proceedings of the 23rd IEEE International Symposium on Reliable Distributed Systems, 2004 66–78 (2004). doi:10.1109/RELDIS.2004.1353004)一个节点的当机往往不代表这个节点永远的离开了,因此并不会自动的从环中删除。其他的节点会定期的尝试与失效节点联系看看他们恢复了没。要永久的改变一个节点的关系,administrators must explicitly add or remove nodes from a Cassandra cluster using the .当一个节点返回的时候,他可能错过了他需要维护的副本数据的写入命令。一旦失效检测标记一个节点当机了,错过的写入就会被存储到其他的副本中一段时间,叫做 hinted handoff。 当一个节点当机超过max_hint_windows_in_ms(默认3小时),hints就不在存储了。这时候你应该等节点启动后运行修复程序了。此外,你应该日常地运行nodetool repair 在所有的节点上,以保证他们的数据的一致性。For more explanation about recovery, see Modern hinted handoff. (该翻译作为实验室大数据组的学习材料的一部分,适合对Cassandra已经有一定了解的读者。未经本人许可,请勿转载。)

    数据分配和备份

    Statement
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    深度学习架构的对比分析深度学习架构的对比分析May 17, 2023 pm 04:34 PM

    深度学习的概念源于人工神经网络的研究,含有多个隐藏层的多层感知器是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示,以表征数据的类别或特征。它能够发现数据的分布式特征表示。深度学习是机器学习的一种,而机器学习是实现人工智能的必经之路。那么,各种深度学习的系统架构之间有哪些差别呢?1.全连接网络(FCN)完全连接网络(FCN)由一系列完全连接的层组成,每个层中的每个神经元都连接到另一层中的每个神经元。其主要优点是“结构不可知”,即不需要对输入做出特殊的假设。虽然这种结构不可知使得完

    此「错」并非真的错:从四篇经典论文入手,理解Transformer架构图「错」在何处此「错」并非真的错:从四篇经典论文入手,理解Transformer架构图「错」在何处Jun 14, 2023 pm 01:43 PM

    前段时间,一条指出谷歌大脑团队论文《AttentionIsAllYouNeed》中Transformer构架图与代码不一致的推文引发了大量的讨论。对于Sebastian的这一发现,有人认为属于无心之过,但同时也会令人感到奇怪。毕竟,考虑到Transformer论文的流行程度,这个不一致问题早就应该被提及1000次。SebastianRaschka在回答网友评论时说,「最最原始」的代码确实与架构图一致,但2017年提交的代码版本进行了修改,但同时没有更新架构图。这也是造成「不一致」讨论的根本原因。

    多路径多领域通吃!谷歌AI发布多领域学习通用模型MDL多路径多领域通吃!谷歌AI发布多领域学习通用模型MDLMay 28, 2023 pm 02:12 PM

    面向视觉任务(如图像分类)的深度学习模型,通常用来自单一视觉域(如自然图像或计算机生成的图像)的数据进行端到端的训练。一般情况下,一个为多个领域完成视觉任务的应用程序需要为每个单独的领域建立多个模型,分别独立训练,不同领域之间不共享数据,在推理时,每个模型将处理特定领域的输入数据。即使是面向不同领域,这些模型之间的早期层的有些特征都是相似的,所以,对这些模型进行联合训练的效率更高。这能减少延迟和功耗,降低存储每个模型参数的内存成本,这种方法被称为多领域学习(MDL)。此外,MDL模型也可以优于单

    机器学习系统架构的十个要素机器学习系统架构的十个要素Apr 13, 2023 pm 11:37 PM

    这是一个AI赋能的时代,而机器学习则是实现AI的一种重要技术手段。那么,是否存在一个通用的通用的机器学习系统架构呢?在老码农的认知范围内,Anything is nothing,对系统架构而言尤其如此。但是,如果适用于大多数机器学习驱动的系统或用例,构建一个可扩展的、可靠的机器学习系统架构还是可能的。从机器学习生命周期的角度来看,这个所谓的通用架构涵盖了关键的机器学习阶段,从开发机器学习模型,到部署训练系统和服务系统到生产环境。我们可以尝试从10个要素的维度来描述这样的一个机器学习系统架构。1.

    SOA中的软件架构设计及软硬件解耦方法论SOA中的软件架构设计及软硬件解耦方法论Apr 08, 2023 pm 11:21 PM

    ​对于下一代集中式电子电器架构而言,采用central+zonal 中央计算单元与区域控制器布局已经成为各主机厂或者tier1玩家的必争选项,关于中央计算单元的架构方式,有三种方式:分离SOC、硬件隔离、软件虚拟化。集中式中央计算单元将整合自动驾驶,智能座舱和车辆控制三大域的核心业务功能,标准化的区域控制器主要有三个职责:电力分配、数据服务、区域网关。因此,中央计算单元将会集成一个高吞吐量的以太网交换机。随着整车集成化的程度越来越高,越来越多ECU的功能将会慢慢的被吸收到区域控制器当中。而平台化

    2023年值得了解的几个前端格式化工具【总结】2023年值得了解的几个前端格式化工具【总结】Sep 30, 2022 pm 02:17 PM

    eslint 使用eslint的生态链来规范开发者对js/ts基本语法的规范。防止团队的成员乱写. 这里主要使用到的eslint的包有以下几个: 使用的以下语句来按照依赖: 接下来需要对eslint的

    AI基础设施:IT和数据科学团队协作的重要性AI基础设施:IT和数据科学团队协作的重要性May 18, 2023 pm 11:08 PM

    人工智能(AI)已经改变了许多行业的游戏规则,使企业能够提高效率、决策制定和客户体验。随着人工智能的不断发展和变得越来越复杂,企业投资于合适的基础设施来支持其开发和部署至关重要。该基础设施的一个关键方面是IT和数据科学团队之间的协作,因为两者在确保人工智能计划的成功方面都发挥着关键作用。人工智能的快速发展导致对计算能力、存储和网络能力的需求不断增加。这种需求给传统IT基础架构带来了压力,而传统IT基础架构并非旨在处理AI所需的复杂和资源密集型工作负载。因此,企业现在正在寻求构建能够支持AI工作负

    深析如何通过Nginx源码来实现worker进程隔离深析如何通过Nginx源码来实现worker进程隔离Nov 06, 2022 pm 04:41 PM

    本文给大家介绍如何通过修改Nginx源码实现基于端口号的 Nginx worker进程隔离方案。看看到底怎么修改Nginx源码,还有Nginx事件循环、Nginx 进程模型、fork资源共享相关的知识。

    See all articles

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    AI Hentai Generator

    AI Hentai Generator

    Generate AI Hentai for free.

    Hot Article

    Repo: How To Revive Teammates
    1 months agoBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
    2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island Adventure: How To Get Giant Seeds
    1 months agoBy尊渡假赌尊渡假赌尊渡假赌

    Hot Tools

    Safe Exam Browser

    Safe Exam Browser

    Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

    PhpStorm Mac version

    PhpStorm Mac version

    The latest (2018.2.1) professional PHP integrated development tool

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

    WebStorm Mac version

    WebStorm Mac version

    Useful JavaScript development tools

    mPDF

    mPDF

    mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),