`
allan_chan
  • 浏览: 2130 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Hector 配置

 
阅读更多
Cassandra 客户端 Hector介绍
Hector:Java Cassandra 客户端,对thrift做了简单封装。支持Failover、pooling、JMX。
Hector当前最新版本hector-0.7.0-16.zip,
Hector源码下载(前提安装了git客户端),在命令行输入git命令:
git clone http://github.com/rantav/hector.git ./hector0.7.0-16
下载apache-cassandra-0.6.4-src源码,会发现包org.apache.cassandra.thrift有部分代码没有。没关系,可以在apache-cassandra-0.6.4-src\interface\thrift\gen-java这个文件夹下找到。
1. Hector连接一个节点
    Hector 客户端连接Cassandra节点
    新建一个空的CassandraClientPool
CassandraClientPool pool = CassandraClientPoolFactory.INSTANCE.get();
    往CassandraClientPool添加Cassandra节点CassandraHost.
例如:
CassandraHost cassandraHost1 = new CassandraHost(”hadoop1″, 9160); pool.addCassandraHost(cassandraHost1);
CassandraHost cassandraHost2 = new CassandraHost(”hadoop2″, 9160);
pool.addCassandraHost(cassandraHost2);
    从连接池获得一个CassandraClient
CassandraClient client = pool.borrowClient();
得到一个有效的client就可以操作Keyspace了。
例子代码可以参考me.prettyprint.cassandra.examples包。
2. Hector中的几个对象
? 集群-Cluster
cluster是Hector客户端对cassandra服务器集群的抽象(可以想象一下虚拟机的原理,把物理设备抽象成一个对象,包括一系列属性和操作),包含集群中每个节点(CassandraHost)的信息。节点的信息在cluster初始化的时候注册进去。
在使用hector时,Cluster通常作为程序的一个主要入口。首先获取或者创建一个cluster,然后再用keyspaceOperator去操作keyspace。
? 节点-CassandraHost
一个CassandraHost实例对应cassandra cluster中的一个节点。
它做了两件事情:一是封装了连接一个节点的必需信息,二是注册了该节点连接池(CassandraClientPoolByHost)配置信息。
必需的连接信息包括节点的ip或者主机名、端口、超时时间等。
连接池配置信息包括最大活跃连接数(默认为50)、最大闲置链接数(默认为5个)、连接资源耗尽时最大等待时间(默认行为是阻塞)等,同时提供一个资源耗尽策略。
资源耗尽策略有3种:1、连接耗尽时fail并抛出异常;2、连接耗尽时再创建一个连接;3、连接耗尽时阻塞直到有可用连接。默认是资源耗尽策略是2再创建一个连接。内部连接池的实现原理可以看一下org.apache.commons.pool.impl.GenericObjectPool。

? 节点连接池-CassandraClientPool:一个cluster中所有节点的连接由一个CassandraClientPool来负责管理。 CassandraClientPool可以看成是一个简单的在不同CassandraClientPoolByHost连接池之间的多路转换器。节点池CassandraClientPool hold所有可用的CassandraClientPoolByHost连接池,而且keyed by url:port。因此在CassandraClientPool中获取一个CassandraClientPoolByHost的方法可以通过by url and port。
? 单个节点的连接池-CassandraClientPoolByHost
A cassandra client pool per one cassandra host。
CassandraClientPoolByHost可以看作是一个管理一台cassandrahost连接的连接池。CassandraClientPoolByHost最大活跃连接数默认为50,最大闲置链接数默认为5个,连接资源耗尽时默认行为是阻塞。这些值最终取决于CassandraHost的配置。
? 客户端-CassandraClient
CassandraClient对象对远程cassandra 服务来说是一个high level handle,它建立一个跟CassandraHost的链接。通过client可以获得一个Keyspace.keyspace 可以让你对远程的 cassandra进行读写操作。
? Keyspace
Keyspace 对cassandra所有的读写操作来说是一个high level handle,它可以操作具体的column。Keyspace不是线程安全的,用的时候一个线程一个Keyspace。(PS:线程安全的本质是保护数据,如果在读取过程中不发生修改任何数据的话,那么纯读取操作可以不用care)。
Keyspace执行失败会执行Failover操作。FailoverPolicy有三种:1、fail时直接返回异常;2、fail时再尝试下一个节点(再剩下的节点里随机选一个);3、失败时尝试所有节点。默认策略是fail时尝试所有节点.

分享到:
评论

相关推荐

    rplidar使用hector_slam的hector_mapping geotiff创建地图方法

    此命令会启动rviz并加载hector_slam的相关配置,同时启动hector_mapping与geotiff_mapper节点,开始构建并保存地图。 #### 七、总结 本文详细介绍了如何利用RPLIDAR和hector_slam工具包在ROS环境中实现地图的构建...

    hector client guide

    - **依赖注入**:支持通过依赖注入框架(如 Spring)进行 Hector 的配置和管理。 #### 五、API 概览 Hector 提供了丰富的 API,涵盖了 Cassandra 常见操作的所有方面: - **插入单行单列**:`Mutator` 类可用于...

    hector slam源码

    参数配置** 海克托SLAM的性能很大程度上取决于参数设置,如搜索半径、匹配阈值、图优化迭代次数等。这些参数可以通过`hector_mapping/params`目录下的YAML文件进行调整。 总的来说,海克托SLAM通过高效的扫描匹配...

    hector_slam-master.zip_Hector slam介绍_hector_slam_laser slam_slam

    压缩包“hector_slam-master”可能包含Hector SLAM的源代码、示例数据、配置文件和文档等,供用户学习、理解和使用该算法。通过解压和阅读这些内容,可以深入了解Hector SLAM的实现细节和使用方法。对于希望掌握SLAM...

    java NoSql Cassandra hector

    通常,这可以通过Maven或Gradle的配置完成。 2. 创建Cluster和Session:初始化Cassandra连接需要创建一个Cluster对象,表示一组Cassandra节点。然后,基于Cluster创建Session,用于执行实际的数据库操作。 ```java...

    hector_slam源码

    6. **参数配置文件**: 定义了各种算法参数,可以根据实际需求调整。 **学习与应用** 了解并分析Hector SLAM的源码有助于理解SLAM的基本工作原理,对于开发或优化机器人导航系统非常有帮助。你可以从以下几个方面...

    开源项目-hectorcorrea-ldpserver.zip

    这个开源项目由Hector Correa开发,旨在提供一个轻量级、高效的解决方案,让开发者能够快速搭建支持LDP协议的服务器。 LDP的核心概念包括资源(Resources)和容器(Containers),其中资源代表网络上的实体,可以是...

    hector_small_arm_common:用于 Hector 团队使用的基于小型轻量 Dynamixel RX 电机的手臂的 ROS 包

    描述中提到,"hector_small_arm_common" 包含了该手臂操作所需的一系列通用文件,这些文件通常包括但不限于配置文件、消息类型定义、服务定义、节点程序和参数设置等。这些组件对于实现对 Dynamixel RX 电机的精确...

    hector_gazebo:hector_gazebo提供与使用凉亭模拟机器人相关的软件包(凉亭插件,世界文件等)

    1. **配置和运行虚拟机器人**:在Gazebo中设置和启动凉亭机器人的仿真模型,调整其参数以适应不同的实验需求。 2. **测试感知系统**:利用插件模拟各种传感器数据,例如激光雷达扫描,以验证机器人的定位、避障和...

    Cassandra-examples

    2. **Hector库**:学习如何初始化和配置Hector客户端,创建Keyspace和ColumnFamily对象,以及如何使用其提供的API执行CRUD操作。 3. **Java编程**:掌握使用Java与Cassandra交互的基本语法,如创建连接、执行CQL...

    北大数据库原理与应用大作业

    4. **性能测试与调优**:运行基准测试,监控资源使用情况,根据结果调整查询计划和配置参数。 总的来说,这个大作业旨在让学生在实践中理解分布式环境下的数据管理和查询优化,这对于理解和解决大数据场景下的实际...

    web_playground_project:基于Hector Profe课程的Web Playground

    Creo El README.md配置文件的通用版本。 Y luego aplico estos comandos: git init git添加 git commit -m“第一次提交” git branch -M主 git remote add origin git push -u origin主 Luego para seguir ...

    Drive Rescue v1.8 (文件恢复D6代码)

    1. `rescue.cfg`:这可能是配置文件,存储了Drive Rescue的设置和偏好,如默认选项或用户自定义的恢复参数。 2. `welcodlg.dfm`:DFM文件是Delphi中的表单文件,包含用户界面的设计布局。`welcodlg`可能代表欢迎...

    自定义四轮小车的ROS导航

    地图是导航的基础,可以使用`gmapping`或`hector_mapping`等工具在线创建2D occupancy grid地图。这些工具根据传感器数据动态更新地图,提供给规划器使用。 3. **全局路径规划**: `global_planner`使用A*或...

    google cartographer

    Cartographer的核心算法基于概率滤波,特别是使用了Hector SLAM和GMapping算法的改进版本。它采用连续扫描匹配来处理来自激光雷达(LiDAR)和惯性测量单元(IMU)的数据,通过这些传感器数据进行实时的运动估计和...

    slamdependpackage.zip

    5. **hector_slam-noetic-devel**:Hector SLAM是一个基于粒子滤波的2D SLAM算法,以其快速和鲁棒性著称,适用于无人机和地面机器人。 6. **slam_karto**:与open_karto类似,但可能包含不同的版本或配置,提供...

    cartographer.zip

    Cartographer采用了基于概率的滤波方法,如Hector SLAM和Google's LSD-SLAM所采用的HTH(Hierarchical Triangulation History)图优化框架。它将时间序列的传感器数据流转换为连贯的局部和全局地图,通过回环检测和...

    ros导航与路径规划实验

    2. **创建地图**:使用如`gmapping`或` Hector SLAM`等SLAM(Simultaneous Localization and Mapping)算法生成室内或室外环境的地图。 3. **配置参数**:修改`move_base`、`costmap_2d`等配置文件,设定机器人的...

    gazebo仿真建立地图自主导航.zip

    ROS中有许多预封装的SLAM解决方案,比如`gmapping`或`hector_slam`,它们可以从激光雷达数据中构建环境的地图。在Gazebo中运行机器人时,这些SLAM节点会收集数据并逐步建立地图。一旦地图构建完成,你可以将其保存为...

    navigation-kinetic-devel.rar_kinetic_ros导航_ros算法_路径规划ros

    这通常通过SLAM(Simultaneous Localization and Mapping,同时定位与建图)技术实现,如Gmapping或 Hector SLAM。这些工具会利用传感器数据(如激光雷达或RGB-D相机)来创建环境地图。 2. **全局路径规划**:全局...

Global site tag (gtag.js) - Google Analytics