首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hadoop 的 Secondary Sorting

之前会自动对 key 排序,但是上述的情况实际是要根据 id 来给 value 排序(因为在 map 之后 key 已经变成 index 了),凡是涉及到要给 value 排序的,都要使用 Hadoop 的 Secondary...这张图其实已经可以说明,把 value 要排序的关键属性放到 key 里面去,这样 key 就变成了 natural key(上述的 index)和 secondary key(上述的 id)这样两部分组成的一个...Sort:真正给 key 排序的比较算法要对 natural key 和 secondary key 两部分进行排序,从而保证了 key 在 id 维度上是有序的,而 id 和 value 是一一对应的...Group:grouping 的比较算法忽略掉 secondary key,只对 natural keygrouping,使得属于同一 index 的数据都走到同一个 reducer 中去。...后话:这是 Secondary Sorting 的过程,可以解决我的问题,但是后来发现,实际上,我的问题并不需要要用这样啰嗦的方式来解决: 进入 reducer 的 key 只需要是 id,Hadoop

13610
您找到你想要的搜索结果了吗?
是的
没有找到

复制集让mongodbsecondary支持读操作,因为存在读写延迟所以是否需要读写分离

1,让mongodbsecondary支持读操作 对于replica set 中的secondary 节点默认是不可读的。在写多读少的应用中,使用Replica Sets来实现读写分离。...通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。 如果通过shell访问mongo,要在secondary进行查询。...的话则会报下面的异常 com.mongodb.MongoException: not talking to master and retries used up 解决的办法很多。...,如果secondary访问不了的时候就从master中读 或 dbFactory.getDb().setReadPreference(ReadPreference.secondary());//只从secondary...中读,如果secondary访问不了的时候就不能进行查询 第三种方法:在配置mongo的时候增加slave-ok=”true”也支持直接从secondary中读 <mongo:mongo id=”mongo

48310

搭建高可用MongoDB集群(Replica set)

Secondary:Secondary从Primary复制oplog,然后将oplog中的操作应用到自己的data sets。...Secondary和Primary之间是异步复制,也就是Secondary中的数据可能不是最新的。默认情况下,Secondary不可读不可写,但是可以通过设置运行客户端从Secondary读。...",                    #mongodb-3为secondary节点             "uptime" : 1671,             "optime" : {                 ...启动mongodb-1的服务,查看集群状态,此时mongodb-1已结成为新的secondary节点。...",                        #mongodb-1为secondary节点             "uptime" : 1945,             "optime" :

9.8K100

MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录

health:1 1表明状态是正常,0表明异常 state:1 值小的是primary节点、值大的是secondary节点 三、测试Mongodb副本集数据复制功能 <mongodb默认是从主节点读写数据的...这是因为mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读 repset:SECONDARY> db.getMongo().setSlaveOk(); repset:SECONDARY...:SECONDARY> use kevin; switched to db kevin repset:SECONDARY> db.getMongo().setSlaveOk(); repset:SECONDARY...secondary:只从secondary节点上进行读取操作,存在的问题是secondary节点的数据会比primary节点数据“旧”。...secondaryPreferred:优先从secondary节点进行读取操作,secondary节点不可用时从主节点读取数据; nearest:不管是主节点、secondary节点,从网络延迟最低的节点上读取数据

2K40

.NET Core+MongoDB集群搭建与实战

故障转移 图中有三台 MongoDB 实例,当 Primary 挂了后,Secondary 可以换掉挂了的服务器,成为新的 Primary。 ? 由于我只有两台服务器,因此只能组双机热备。...作用是当主节点挂了后,投票给 Secondary,让 Secondary 成为 Primary。 但是怎么配置原有的 MongoDB 实例,使其成为 Primary - Secondary 集群呢?...找到 MongoDB 官方的文档: https://docs.mongodb.com/manual/tutorial/deploy-replica-set/ 设计实例名称 在 primary 机器和 secondary...机器,执行命令停止运行: mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --shutdown 重新启动 Secondary...; using MongoDB.Driver; 连接 MongoDB var client = new MongoClient("mongodb://primary的ip:27017,secondary

88720

搭建高可用mongodb集群(二)—— 副本集

2、分别在每台机器上建立mongodb副本集测试文件夹 #存放整个mongodb文件 mkdir -p /data/mongodbtest/replset #存放mongodb数据文件 mkdir.../data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo 192.168.1.136:27017 repset:SECONDARY> rs.status...**secondary:**只从secondary节点上进行读取操作,存在的问题是secondary节点的数据会比primary节点数据“旧”。...是不是想得很周到啊,一看mongodb的开发兄弟熟知大数据架构体系,其实不只是主节点、副本节点、仲裁节点,还有Secondary-Only、Hidden、Delayed、Non-Voting。...**Non-Voting:**没有选举权的secondary节点,纯粹的备份数据节点。 到此整个mongodb副本集搞定了两个问题: 主节点挂了能否自动切换连接?目前需要手工切换。

1.1K20

Docker下,实战mongodb副本集(Replication)

如上图,一共有三个mongodb server,分别是Primary、Secondary1、Secondary2,应用服务器的读写都在Primary完成,但是数据都会同步到Secondary1和Secondary2...Secondary2 本次用到的镜像 本次用到的镜像是bolingcavalry/ubuntu16-mongodb349:0.0.1,这是我自己制作的mongodb的镜像,已经上传到hub.docker.com...进入m2容器,执行mongo进入mongodb控制台,新增一条记录: replset0:SECONDARY> db.student.insert({name:"John", age:10}) WriteResult...进入m1容器,执行mongo进入mongodb控制台,查询记录发现新增的数据已经同步过来,但是在m1上新增记录依旧失败,如下所示: replset0:SECONDARY> db.student.find...在m1或者m2的mongodb控制台执行r s.status()命令,可以看到如下信息: replset0:SECONDARY> rs.status() { "set" : "replset0"

3.1K100
领券