Category Archives: Database

MongoDB RS优先级设置

在AWS上的MongoDB ReplicaSet集群中,我们的主站区域(例如:cn-north-1a)存在着多数节点,而异地区域(如:cn-north-1b)存在少数的备份复制集。而实例之间的配置又不同,这就要求我们让一些节点避免成为primary。这就用到了RS的priority属性——在RS配置中,非仲裁节点都有一个priority,范围为0-100,越大的值越优先成为priority。默认情况下是1。如果是0,则不能成为primary。
例如在下面一个集群中,0,1,2位于cn-north-1a,配置2最大。而3位于cn-north-1b,我们可以通过设置优先级让2更倾向于成为primary,0&1其次,而让3避免成为primary。

这样就实现了我们的目的~

Posted in Database, NoSQL.

MongoDB的权限管理

MongoDB 2.4新引入了一套权限控制的机制,而旧的addUser的方法在3.0已经不再提供,这对我们管理MongoDB造成了诸多不便。本文简单总结一下新版MongoDB关于权限管控的一些技巧。 Continue reading

Posted in Database, NoSQL.

Redis Cluster学习笔记2

继上一篇,本文将探讨下Redis Cluster更多的原理和特性。本文的内容来自于官方文档和后面的参考文献。 Continue reading

Posted in Database, MySQL.

Redis Cluster学习笔记1

Redis在3.0版正式引入了集群这个特性。Redis集群是一个分布式(distributed)、容错(fault-tolerant)的 Redis内存K/V服务, 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset),比如Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。 Continue reading

Posted in Database, NoSQL.

Redis Sentinel配置小记

Sentinel是一个管理多个redis实例的工具,它可以实现对redis的监控、通知、自动故障转移。sentinel不断的检测redis实例是否可以正常工作,通过API向其他程序报告redis的状态,如果redis master不能工作,则会自动启动故障转移进程,将其中的一个slave提升为master,其他的slave重新设置新的master实例。也就是说,它提供了:
监控(Monitoring): Sentinel 会不断地检查你的主实例和从实例是否正常。
通知(Notification): 当被监控的某个 Redis 实例出现问题时, Sentinel 进程可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主redis实例失效时, Sentinel 会开始记性一次failover, 它会将失效主实例的其中一个从实例升级为新的主实例, 并让失效主实例的其他从实例改为复制新的主实例; 而当客户端试图连接失效的主实例时, 集群也会向客户端返回新主实例的地址, 使得集群可以使用新主实例代替失效实例。
Redis Sentinel自身也是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程, 这些进程使用流言协议(gossip protocols)来接收关于主Redis实例是否失效的信息, 然后使用投票协议来决定是否执行自动failover,以及评选出从Redis实例作为新的主Redis实例。 Continue reading

Posted in Database, NoSQL, Python|R.

OpenTSDB部署手记

OpenTSDB是一个基于HBase上的实时监控信息收集和展示平台。它支持秒级数据采集metrics,使用HBase进行永久存储,可以做容量规划,并很容易的接入到现有的监控系统里。OpenTSDB可以从大规模的设备中获取相应的metrics并进行存储、索引以及服务,从而使得这些数据更容易让人理解,如web化,图形化等。 Continue reading

Posted in BigData, HBase|Hive, NoSQL, Tools.

使用importtsv命令加载数据

Bulkload是向HBase批量加载数据的方式,它会直接将数据进行准备和并加载成HFile,并直接讲文件插入到RegionServer中,这比通过一个MapReduce/Spark作业来加载性能高得多。详细的流程如下:
1. 抽取数据并形成固定格式的文件,比如csv。
2. 将数据转换称为HFile。这需要一个MapReduce作业,可以自己来实现Map方法来,HBase来完成后面的Reducer操作。最后,每一个region的HFile将会在输出目录被创建出来。
3. 将生成的HFile加载到HBase中,并在所有的regionserver上注册它们,即完成Complete Bulkload阶段。
Continue reading

Posted in BigData, HBase|Hive, NoSQL.

HBase 权限控制

HBase的权限管理依赖协协处理器。所以我们需要配置hbase.security.authorization=true,以及hbase.coprocessor.master.classeshbase.coprocessor.master.classes使其包含org.apache.hadoop.hbase.security. access.AccessController来提供安全管控能力。所以需要设置下面参数:

Continue reading

Posted in BigData, HBase|Hive, NoSQL.

HBase 常用参数整理

1. 通用和master配置

hbase.rootdir
默认: file:///tmp/hbase-${user.name}/hbase
region server的数据根目录,用来持久化HBase。例如,要表示hdfs中的’/hbase’目录,namenode 运行在debugo01的8020端口,则需要设置为hdfs:// debugo01:8020/hbase。这个是必须要设置的项目,默认值本地文件系统的/tmp只能在单机模式使用。 Continue reading

Posted in BigData, HBase|Hive, NoSQL.

HBase Shell 常用操作

HBase Shell是HBase的一个命令行工具,我们可以通过它对HBase进行维护操作。我们可以使用sudo -u hbase hbase shell来进入HBase shell。
在HBase shell中,可以使用status, version和whoami分别获得当前服务的状态、版本、登录用户和验证方式。

HBase shell中的帮助命令非常强大,使用help获得全部命令的列表,使用help ‘command_name’获得某一个命令的详细信息。 Continue reading

Posted in BigData, HBase|Hive, NoSQL.