locality

高阶数据结构:SSTable

陌路散爱 提交于 2020-01-10 00:13:54
1. 前言 最近在组会上面通过小组讨论论文时,发现了SSTable这个数据结构。课后为了深入分析和学习这个数据结构,我做了一些资料查阅。在查询相关分布式的书籍后,找到了SSTable的数据结构,现将其作为笔记记录下来。之前整理的BigTable论文里面提及到了SStable,但是当时并没有引起我的注意。现在将深入理解这个数据结构——SSTable。 2. SSTable的定义 Google SSTable文件格式在内部用于存储Bigtable数据。 它的格式为文件本身就是一个排序的、不可变的、持久的Key/Value对Map,其中Key和value都可以是任意的byte字符串。提供操作以查找与指定键相关联的值,并遍历指定键范围内的所有键/值对。使用Key来查找Value,或通过给定Key范围遍历所有的Key/Value对。每个SSTable包含一系列的Block(一般Block大小为64KB,但是它是可配置的),在SSTable的末尾是Block索引,用于定位Block,这些索引在SSTable打开时被加载到内存中,在查找时首先从内存中的索引二分查找找到Block,然后一次磁盘寻道即可读取到相应的Block。还有一种方案是将这个SSTable加载到内存中,从而在查找和扫描中不需要读取磁盘。 3. BigTable的架构 BigTalbe构建在GFS之上

使用Python爬取、清洗并分析前程无忧的大数据职位

核能气质少年 提交于 2019-12-24 04:03:49
爬取前程无忧的数据(大数据职位) 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Wed Nov 1 14:47:27 2019 4 5 @author: loo 6 """ 7 8 9 import scrapy 10 import csv 11 from scrapy.crawler import CrawlerProcess 12 13 14 class MySpider(scrapy.Spider): 15 name = "spider" 16 17 def __init__(self): 18 # 保存为CSV文件操作 19 self.f = open('crawl_51jobs.csv', 'wt', newline='', encoding='GBK', errors='ignore') 20 self.writer = csv.writer(self.f) 21 '''title,locality,salary,companyName,releaseTime''' 22 self.writer.writerow(('职位', '公司地区','薪资', '公司名称', '发布时间')) 23 24 # 设置待爬取网站列表 25 self.urls = [] 26 # 设置搜索工作的关键字 key 27 key = '大数据'

HBase–RegionServer宕机恢复原理

霸气de小男生 提交于 2019-12-06 16:59:28
Region Server宕机总述 HBase一个很大的特色是扩展性极其友好,可以通过简单地加机器实现集群规模的线性扩展,而且机器的配置并不需要太好,通过大量廉价机器代替价格昂贵的高性能机器。但也正因为廉价机器,由于网络硬盘等各方面的原因,机器宕机的概率就会相对比较大。RegionServer作为HBase集群中实际的执行节点,不可避免地也会出现宕机。 宕机并不十分可怕,因为不会丢数据。HBase集群中一台RegionServer宕机(实指RegionServer进程挂掉,下文同)并不会导致已经写入的数据丢失,和MySQL等数据库一样,HBase采用WAL机制保证这点:它会先写HLog,再写缓存,缓存写满后一起落盘。即使意外宕机导致很多缓存数据没有及时落盘,也可以通过HLog日志恢复出来。 可是没有数据丢失并不意味着宕机对业务方没有任何影响。众所周知,RegionServer宕机是由zookeeper首先感知到的,而zookeeper感知到RegionServer宕机事件是需要一定时间的,这段时间默认会有3min。也就是说,在RegionServer宕机之后的3min之内系统并不知晓它实际上已经宕机了,所有的读写路由还会正常落到它上面,可想而知,这些读写必然都会失败。(当然,并不是所有RegionServer宕机都需要3min中才能被Zookeeper感知

使用Python爬取、清洗并分析前程无忧的大数据职位

跟風遠走 提交于 2019-12-06 14:31:13
爬取前程无忧的数据(大数据职位) 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Wed Nov 1 14:47:27 2019 4 5 @author: loo 6 """ 7 8 9 import scrapy 10 import csv 11 from scrapy.crawler import CrawlerProcess 12 13 14 class MySpider(scrapy.Spider): 15 name = "spider" 16 17 def __init__(self): 18 # 保存为CSV文件操作 19 self.f = open('crawl_51jobs.csv', 'wt', newline='', encoding='GBK', errors='ignore') 20 self.writer = csv.writer(self.f) 21 '''title,locality,salary,companyName,releaseTime''' 22 self.writer.writerow(('职位', '公司地区','薪资', '公司名称', '发布时间')) 23 24 # 设置待爬取网站列表 25 self.urls = [] 26 # 设置搜索工作的关键字 key 27 key = '大数据'

电商模块开发-第七天

这一生的挚爱 提交于 2019-12-02 18:11:34
第一个功能:实现商品的预览功能。今天换一种方式,之前都是从持久层往前端写,现在从前端的请求开始往后写,可能易于理解。 从前端传送过来的请求 <a href="<c:url value="/list?method=preArticle&id=${a.id }"/>"> //附带了商品的id servlet的处理 public void preArticle() throws ServletException, IOException { String id=request.getParameter("id"); Article article=service1.getById(id); article.setDiscount(8.8); request.setAttribute("article",article); request.getRequestDispatcher("/WEB-INF/jsp/preArticle.jsp").forward(request,response); } 业务层接口的实现类的处理 public Article getById(String id) { return articleDao.selectById(id); } 持久层 DAO层的接口 public Article selectById(String id); DAO层的实现