Apache HBase

Python爬虫:手把手教你写迷你爬虫架构

一笑奈何 提交于 2020-08-15 07:45:10
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:我爱学Python 语言&环境 语言:继续用Python开路! 一个迷你框架 下面以比较典型的通用爬虫为例,分析其工程要点,设计并实现一个迷你框架。架构图如下: 代码结构: config_load.py 配置文件加载 crawl_thread.py 爬取线程 mini_spider.py 主线程 spider.conf 配置文件 url_table.py url队列、url表 urls.txt 种子url集合 webpage_parse.py 网页分析 webpage_save.py 网页存储 看看配置文件里有什么内容: spider.conf Step 3. 记录哪些网页已经下载过的小本本——URL表。 在互联网上,一个网页可能被多个网页中的超链接所指向。这样在遍历互联网这张图的时候,这个网页可能被多次访问到。为了防止一个网页被下载和解析多次,需要一个URL表记录哪些网页已经下载过。再遇到这个网页的时候,我们就可以跳过它。 crawl_thread.py Step 5. 页面分析模块 从网页中解析出URLs或者其他有用的数据。这个是上期重点介绍的,可以参考之前的代码。 Step 6. 页面存储模块 保存页面的模块,目前将文件保存为文件

.net hbase client--终于浮出水面的轮子

时光怂恿深爱的人放手 提交于 2020-08-15 06:26:39
一、开篇 1.背景 在大数据时代,HBase 数据库是个绕不开的热门话题。 由于其使用 Java 作为主要开发语言,并且依赖大量的 Java 组件(如 Hadoop、zooKeep),使得其他技术栈想要有一个对应的 hbase 客户端变得有一定难度。在 .net 的世界中,一直缺乏能够直接访问 hbase 的客户端。 2.历程 Apache Thrift 作为社区内比较有名的支持多语言的 Api 服务,可以解决跨语言访问 HBase 数据库的痛点。在以往的文章中业也介绍过 C#如何使用 thrift 访问 hbase,但在真正的生产环境中,该方式的访问效率和原生 Java 客户端比起来真着实让人心灰意冷。此外,thrift 也要求服务端和客户端版本一致。 Protocol Buffers HBase 提供基于 Protocol 的数据访问,这以一种相对高效紧凑的数据交换规则。基于此,我们能够造出属于 .net 的 hbase 客户端。 这是一个造轮子的过程,中间虽有着许多难点就不再赘述。下面直接介绍该项目的使用。 二、HBaseNet 使用 1.HBase 数据库准备 作为项目使用演示,我们就不讨论如何搭建 HBase 集群了,一切以简单便捷为前提,直接使用别人构建好的 docker 镜像就可以轻松获取 HBase 数据库的使用。 在 dockerhub 中搜索 hbase

es 在数十亿级别数量下如何提高查询效率?

你。 提交于 2020-08-15 04:42:01
面试题 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 面试官心理分析 这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s ,坑爹了。第一次搜索的时候,是 5~10s ,后面反而就快了,可能就几百毫秒。 你就很懵,每个用户第一次访问都会比较慢,比较卡么?所以你要是没玩儿过 es,或者就是自己玩玩儿 demo,被问到这个问题容易懵逼,显示出你对 es 确实玩儿的不怎么样? 面试题剖析 说实话,es 性能优化是没有什么银弹的,啥意思呢?就是 不要期待着随手调一个参数,就可以万能的应对所有的性能慢的场景 。也许有的场景是你换个参数,或者调整一下语法,就可以搞定,但是绝对不是所有场景都可以这样。 性能优化的杀手锏——filesystem cache 你往 es 里写的数据,实际上都写到磁盘文件里去了, 查询的时候 ,操作系统会将磁盘文件里的数据自动缓存到 filesystem cache 里面去。 es 的搜索引擎严重依赖于底层的 filesystem cache ,你如果给 filesystem cache 更多的内存,尽量让内存可以容纳所有的 idx segment file 索引数据文件

999页阿里P7Java学习笔记在互联网上火了,完整版开放下载

孤街醉人 提交于 2020-08-15 03:11:27
笔记作者:来自于阿里P8级架构师: Mark 笔记特点:条理清晰,含图像化表示更加易懂。 内容概要:包括 Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。 JAVA集合 接口继承关系和实现 List ArrayList(数组) Vector(数组实现、线程同步) LinkList(链表) Set HashSet(Hash表) TreeSet(二叉树) JVM JVM就是java虚拟机,它是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能。JVM有自己完善的硬件结构,例如处理器、堆栈和寄存器等,还具有相应的指令系统。 线程 JVM内存区域 JVM运行时内存 垃圾回收与算法 JAVA 四种引用类型 GC分代收集算法 VS 分区收集算法 GC垃圾收集器 JAVA IO/NIO JVM 类加载机制 JAVA多线程并发 JAVA并发知识库 JAVA线程实现/创建方式 4种线程池 线程生命周期(状态) 终止线程4种方式 sleep与wait 区别

HBase可用性分析与高可用实践

那年仲夏 提交于 2020-08-15 02:40:16
HBase作为一个分布式存储的数据库,它是如何保证可用性的呢?对于分布式系统的CAP问题,它是如何权衡的呢? 最重要的是,我们在生产实践中,又应该如何保证HBase服务的高可用呢? 下面我们来仔细分析一下。 什么是分布式系统的CAP? CAP是指一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。 Consistency 一致性 一致性指更新操作成功并返回客户端完成后,分布式系统中所有节点在同一时间的数据完全一致。 从客户端的角度来看,一致性主要指的是并发访问时获取的数据一致。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。 对于数据库来说,如果要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。 Availability 可用性 可用性指服务一直可用,整个系统是可以正常响应的。一般我们在衡量一个系统的可用性的时候,都是通过停机时间来计算的。我们经常说的3个9,4个9的SLA,就是对于可用性的量化表述。 Partition Tolerance分区容错性 分区容错性指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。 而CAP定理证明

Kettle巧用公式轻松实现数据抽取

家住魔仙堡 提交于 2020-08-14 22:49:05
1.前言 数据清洗过程需要对数据进行转换拼装计算,Kettle提供“公式步骤”供用户使用,下面将介绍如何在kettle中使用公式。 2.公式步骤帮助手册介绍 打开kettle工具, 在左侧找到“公式步骤”(核心对象->脚本->公式),主要包含“新字段”(计算后产生的新字段)、“替换值”(用计算获得的值替换原有的值,“替换值”优先级高于“新字段”),计算公式,点击公式输入框会弹出帮助手册,此处重点介绍公式基本使用方法。 (1)基本计算介绍(Basic computation) 点击左上角小三角形,自动展开,右侧框内会有描述和示例。在上面的编辑框内输入公式,下面会同步进行校验,如果输入正确,则下方编辑框内不存在任何提示。 下面这里是几个简单示例,字段需要用[]括起来,如果存在多运算符采用()决定先后运算顺序。 (2)比较计算介绍(Comparisons) 比较两个值的大小,返回为boolean值 (3)日期/时间计算介绍(Date/Time) 日期函数比较多,这里介绍通用的四个函数,具体说明如下所示: (4)信息计算介绍(Information) 日期函数比较多,这里介绍通用的四个函数,具体说明如下所示: (5)逻辑计算介绍(Logical) 逻辑函数比较多,这里介绍通用的三个函数,具体说明如下所示: (6)数学计算介绍(Math) 数学函数比较多,这里介绍通用的四个函数

滴滴HBase大版本滚动升级之旅

寵の児 提交于 2020-08-14 10:57:27
桔妹导读:滴滴HBase团队日前完成了0.98版本 -> 1.4.8版本滚动升级,用户无感知。新版本为我们带来了丰富的新特性,在性能、稳定性与易用性方便也均有很大提升。我们将整个升级过程中面临的挑战、进行的思考以及解决的问题总结成文,希望对大家有所帮助。 1. 背景 目前HBase服务在我司共有国内、海外共计11个集群,总吞吐超过1kw+/s,服务着地图、普惠、车服、引擎、金融等几乎全部部门与业务线。 然而有一个问题持续困扰着我们:版本较社区落后较多——HBase线上集群使用0.98版本,而社区目前最新的release版本为2.3。这为我们的工作带来了很多额外的掣肘与负担,主要包括以下几点: 新特性引入成本极高: 0.98版本可以算是HBase第一个稳定版本,但过于老旧,社区已经不再维护。想要backport新特性难度越来越大。 自研patch维护成本较高: 我们基于0.98版本有数十个大大小小的自研patch,涵盖了从label分组、ACL鉴权等大的feature到监控体系建设、审计日志优化等Improvement以及各种bug fix。这些patch或是新版本中已支持但和我们实现有差异,或是由于版本差异过大无法合入社区,而且随着时间线的拉长,这种问题只会进一步恶化。 上层组件对于HBase存在一定需求: 得益于活跃的HBase生态圈,目前我们的用户使用形态也比较丰富,OLAP

hive hbase关联表,增量导入的方式的实战

拥有回忆 提交于 2020-08-14 10:30:53
1.创建hbase表 create 'lyj:lyja','cf1' 2.写入数据 put 'lyj:lyja','1','cf1:name','zhangsan' put 'lyj:lyja','1','cf1:age','lisi' 3.查询hbase 表权限 (**给hive授权hbase表的操作权限否则不能操作hbase中的数据**) user_permission 'lyj:lyja' 4 . 在hbase中先授权给hive用户 su hbase hbase shell grant 'hive','RWXCA','lyja' 5.创建hive hbase 外部表 CREATE EXTERNAL TABLE lyja( key string, name string, age string ) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:name,cf1:age") TBLPROPERTIES("hbase.table.name" = "lyja"); 6.准备数据 2,wangwu2,320 3,lisi2,110 7.上传数据到hdfs hdfs dfs -put test