自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 查看linux服务器配置

查看机器型号# dmidecode | grep "Product Name"查看网卡信息# dmesg | grep -i eth查看CPU信息# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c查看物理CPU个数# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l查看每个物理CPU中core的个数(即核数)# cat /proc/cp..

2021-01-29 16:39:22 132

原创 Join

SQL 的join 子句基于多个表之间的相同字段,进行表之间的行结合操作,主要分为Left Join,Right Join ,Inner Join ,Full Outer Join四种,以下为这四种操作描述:INNER JOIN:Join 操作的默认操作(使用Join 即可表示Inner Join ),如果关键字在表中存在一个匹配的时候,则返回行;LEFT JOIN:左表返回所有行,右表进行匹配,如果有匹配值,则返回对应的字段值,如果没有匹配值,则全部置为Null 值;...

2021-01-23 11:24:50 149

原创 主键和外键

主键是唯一标识表中每行的列或一组列,主键必须是唯一值,主键列不包含null值,一个表中只能有一个主键,且主键字段的类型必须是整数类型外键表示一个表1中的一个字段A被另外一个表2中的一个字段B引用外键在数据库层面上保证数据的完整性,当删除表1或者表2中的数据的时候,数据库都会检查一下是否可以被删除...

2021-01-23 11:13:10 556

原创 字符串函数

(1)concat()函数,将两个或者多个字符串组合成一个字符串select concat(user_name,phone) from user(2)length()函数,获取字符串的长度select length(phone) from user(3)replace(字段名,被替换字符,替换字符)函数,搜索并替换字符串中的子字符串select replace(email,‘mtx’,‘text’) from user --将email字段中的mtx替换成test(4)s

2021-01-23 11:01:57 203

原创 union和union all区别

(1)union可以将多个select语句的结果合并为一个,合并后会删除重复的数据select phone from userunionselect tel from order --没有重复数据(2)union all可以将多个select语句的结果合并为一个,合并后不会删除重复的数据select phone from userunion allselect tel from order --可以有重复数据...

2021-01-23 10:50:35 96

原创 Elasticsearch deep paging分页

什么是deep paging? 简单来说 就是搜索的特别深 比如总共有60000条数据,每个shard分了20000条数据,每页是10条数据 这个时候 你要搜索到1000页 实际上要拿到的是10001~10010 你的请求可能是打到一个不包含这个index的shard的node上去 这个node是一个coordinate node 那么这个coordinate node 就会将搜索请求转发到index的shard所在的node上去 比如刚说的情况 要搜索60000条数...

2021-01-04 11:44:36 99

原创 Elasticsearch multi-index和multi-type搜索模式

1、multi-index和multi-type搜索模式如何一次性搜索多个index和多个type下的数据/_search:所有索引,所有type下的所有数据都搜索出来/index1/_search:指定一个index,搜索其下所有type的数据/index1,index2/_search:同时搜索两个index下的数据/*1,*2/_search:按照通配符去匹配多个索引/index1/type1/_search:搜索一个index下指定的type的数据/index1/type1,ty

2021-01-04 09:58:56 108

原创 Elasticsearch search timeout机制

一、timeouttimeout:默认无timeout,latency平衡completeness,手动指定timeout,timeout查询执行机制手动指定timeout:timeout=10ms,timeout=1s,timeout=1mGET /_search?timeout=10m二、timeout机制指定timeout,就能在timeout时间范围内,将搜索到的部分数据(也可能全部都搜索到),直接返回给client,而不是所有数据搜索到再返回,可以为一些敏感的搜索应用提供良

2021-01-04 09:53:35 640

原创 Elasticsearch 的_document增删改查内部原理

增删改原理(1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)(2)coordinating node,对document进行路由,将请求转发给对应的node(有primary shard)(3)实际的node上的primary shard处理请求,然后将数据同步到replica node(4)coordinating node,如果发现primary node和所有replica node都搞定之后,就返回响应结果给客户端查原理1.

2021-01-04 09:36:13 114

原创 quorum机制深入剖析

(1)写一致性是什么?我们在发送任何一个增删改操作的时候,比如说put /index/type/id,都可以带上一个consistency参数,put /index/type/id?consistency=quorumone:要求我们这个写操作,只要有一个primary shard是active活跃可用的,就可以执行all:要求我们这个写操作,必须所有的primary shard和replica shard都是活跃的,才可以执行这个写操作quorum:默认的值,要求所有的shard中,必须是大部分

2020-12-31 17:22:49 283

原创 Elasticsearch document数据路由原理

(1)什么是document数据路由一个index的数据会被分为多个分片,每个分片都在一个shard中,所以说 一个document只能存在一个shard中当客户端创建document的时候 es此时就需要判断 这个document放在哪个shard上 这个过程称之为document routing 数据路由(2)路由算法:shard = hash(routing) % number_of_primary_shards举个例子,一个index有3个primary shard,P0,P1,P2

2020-12-31 17:10:37 110

原创 Elasticsearch bulk批量操作

1、bulk语法每一个操作要两个json串,语法如下:{"action": {"metadata"}}{"data"}举例,比如你现在要创建一个文档,放bulk里面,看起来会是这样子的:{"index": {"_index": "test_index", "_type", "test_type", "_id": "1"}}{"test_field1": "test1", "test_field2": "test2"}可以执行的操作类型(1)delete:删除一个文档,只要1个j

2020-12-31 17:01:02 628

原创 elasticsearch mget批量查询

1、批量查询的好处就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减100倍2、mget的语法(1)一条一条的查询GET /test_index/test_type/1GET /test_index/test_type/2(2)mget批量查询GET /_mget{ "docs" : [ { "_index" ...

2020-12-29 15:13:56 308

原创 Elasticsearch groovy脚本的使用

es有个内置的脚本支持的,可以基于groovy脚本实现各种各样的复杂操作1、添加数据PUT /test_index/test_type/11{ "num": 0, "tags": []}2、内置脚本 将字段num的值增加1POST /test_index/test_type/11/_update{ "script" : "ctx._source.num+=1"}3、外部脚本 使用外部脚本文件名test-add-tags 内容ctx._source.tags

2020-12-29 15:03:34 541

原创 Elasticsearch 的partial update原理

1、语法:post /index/type/id/_update{ "doc": { "要修改的少数几个field即可,不需要全量的数据" }}每次传递少数几个发生修改的field即可,不需要将全量的document数据发送过去2、partial update相对于全量替换的优点 a、所有的查询、修改都发生在一个shard 避免了所有网络数据的开销 大大提升性能 b、减少了查询和修改的 时间间隔,减少了并发冲突的情况3、案例PUT /test...

2020-12-28 16:50:34 132

原创 Elasticsearch基于external version进行乐观锁并发控制

1、基于自己维护的那个version来进行控制es提供了一个feature,就是说,你可以不用它提供的内部_version版本号来进行并发控制,可以基于你自己维护的一个版本号来进行并发控制。举个列子,加入你的数据在mysql里也有一份,然后你的应用系统本身就维护了一个版本号,无论是什么自己生成的,程序控制的。这个时候,你进行乐观锁并发控制的时候,可能并不是想要用es内部的_version来进行控制,而是用你自己维护的那个version来进行控制。2、external?version=1?ver

2020-12-26 16:35:08 342 1

原创 Elasticsearch内部基于_version进行乐观锁并发控制

es的后台,很多类似replica同步请求 都是多线程异步的 也就是说 多个修改请求之间 都是乱序的 没有顺序 肯能后修改的先到 先修改的后到es内部多线程异步并发修改时 是基于自己的_version版本号进行乐观锁并发控制的情况:在后修改的先到时,先修改的 此时会比较一下version号 是否相等 如果不相等 就直接将条数据扔掉...

2020-12-26 10:02:27 151

原创 乐观锁、悲观锁并发方案

一、悲观锁并发控制 在各种情况下,都上锁,上锁之后,只有一个线程可以操作这一条数据,当然 不同场景下,上的锁不同 行级锁 表锁 读锁 写锁二、乐观锁并发控制 当前线程去判断当前数据的版本号,与当前es中数据的版本号 是否相同 如果版本号不同 说明数据已经被 其他人修改过 此时 该线程不会去更新es数据 而是去读取es中最新的数据版本 执行业务计算流程 然后在进行写入三、悲观锁、乐观锁各自优点 悲观锁优点:方便 直接加锁 对应用程序来书 透明 不需要做额外的...

2020-12-26 09:42:24 98

原创 elasticsearch全量替换、强制创建、lazy delete机制

1、document的全量替换(1)语法与创建文档是一样的,如果document id不存在,那么就是创建;如果document id已经存在,那么就是全量替换操作,替换document的json串内容(2)document是不可变的,如果要修改document的内容,第一种方式就是全量替换,直接对document重新建立索引,替换里面所有的内容(3)es会将老的document标记为deleted,然后新增我们给定的一个document,当我们创建越来越多的document的时候,es会在适当的时

2020-12-25 17:27:27 305

原创 elasticsearch使用_source定制返回结果

1、创建索引添加数据put /test_index/test_type/1{ "test_field1": "test field1", "test_field2": "test field2"}get /test_index/test_type/1{ "_index": "test_index", "_type": "test_type", "_id": "1", "_version": 2, "found": true, "_source": {

2020-12-25 17:10:12 297 1

原创 Hive分区表新增字段为null的bug及解决方法

总结:对于分区表添加字段,向已存在分区中插入数据,结果新增字段的值全部为null。注:是已存在分区,新的分区并不会产生该问题;无论是内部表还是外部表均有该问题。创建分区表:create table test1(id int) partitioned by (pt_d varchar(11))插入数据insert into table test1 partition(pt_d='20170101') values(1),(2);查看数据select * from test1;

2020-12-18 16:03:24 342

原创 Elasticsearch容错机制

Elasticsearch容错机制容错第一步:master选举 自动选择另外一个node成为新的master 。承担master的责任容错第二步:master将丢失的某个primary shard的replica shard 提升为primary shard 此时cluster status会变成yellow 因为所有的primary都变成active 但是replica shard还少一个,所以不是所有的replica shard都是active容错第三步:重启故障node,ne.

2020-12-17 17:08:41 175

原创 Elasticsearch超出扩容极限,提升容错性

扩容后:每个节点得shard数量越少,那么每个shard可以占用节点上更多的资源io/CPU/MEM,整个系统的性能会更好如何超出系统的扩容瓶颈:增加replica shard数量 ,primary shard数量是不能变的如何提升容错性:让尽可能多的服务器宕机,保证数据不丢失如何超出扩容极限,如何提升容错性?(1)primary&replica自动负载均衡,6个shard,3 primary,3 replica(2)每个node有更少的shard,IO/CPU/Memory.

2020-12-17 16:46:13 103

原创 elasticsearch的shard&replica机制

1、shard&replica机制(1)index包含多个shard(2)每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力(3)增减节点时,shard会自动在nodes中负载均衡(4)primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard(5)replica shard是primary sh

2020-12-16 17:59:31 319

原创 Elasticsearch分布式机制、扩容方式、数据rebalance

1、Elasticsearch对复杂分布式机制的透明隐藏特性Elasticsearch是一套分布式的系统,分布式是为了应对大数据量隐藏了复杂的分布式机制分片机制(我们之前随随便便就将一些document插入到es集群中去了,我们有没有care过数据怎么进行分片的,数据到哪个shard中去)cluster discovery(集群发现机制,我们之前在做那个集群status从yellow转green的实验里,直接启动了第二个es进程,那个进程作为一个node自动就发现了集群,并且加入了进去,还接受

2020-12-16 17:15:21 1286

原创 elasticsearch嵌套聚合,下钻分析,聚合分析

dsl:嵌套聚合,下钻分析,聚合分析 举例分析 如下:基础数据:es中数据{ "took": 1, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 4, "max_score": 1, "hits": [ { "_index": "ecommerce",

2020-12-15 17:35:20 326 1

原创 elasticsearch倒排索引

总结:全文检索: 将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回phrase search: 要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回es中含有的数据{ "took": 1, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits":

2020-12-15 15:38:16 99

原创 es集群健康状况、增删改查操作

简单的集群管理(1)快速检查集群的健康状况es提供了一套api,叫做cat api,可以查看es中各种各样的数据GET /_cat/health?v如何快速了解集群的健康状况?green、yellow、red?green:每个索引的primary shard和replica shard都是active状态的yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态red:不是所有索引的pri

2020-12-14 17:40:18 581

原创 elasticsearch的核心概念

elasticsearch的核心概念(1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级(2)Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常(3)Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去

2020-12-14 14:49:03 63

原创 map和flatmap的区别

map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。Spark 中 map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象。 而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象操作2:最后将所有对象合并为一个对象o...

2020-09-29 13:45:13 302

原创 Spark map-side-join 关联优化详细说明

将多份数据进行关联是数据处理过程中非常普遍的用法,不过在分布式计算系统中,这个问题往往会变的非常麻烦,因为框架提供的 join 操作一般会将所有数据根据 key 发送到所有的 reduce 分区中去,也就是 shuffle 的过程。造成大量的网络以及磁盘IO消耗,运行效率极其低下,这个过程一般被称为 reduce-side-join。如果其中有张表较小的话,我们则可以自己实现在 map 端实现数据关联,跳过大量数据进行 shuffle 的过程,运行时间得到大量缩短,根据不同数据可能会有几倍到数十倍的性能

2020-05-18 14:43:02 272

原创 linux时区设置详细

Linux系统中有两个时间,一个是硬件时间,还有一个是系统时间。我们通常所表达的都是指系统时间,一般情况下我们修改的也是系统时间。而Linux系统在启动时会去读取硬件时间,所以你会发现你重启后,你系统的时间又不对设置当前系统时区1、tzselect2、cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime使用网络时间同步系统时间...

2019-11-29 13:54:21 178

原创 HUE安装文档

1、安装hue需要工具sudo yum install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel py...

2019-11-16 11:46:33 241

原创 RDD相关概念

RDD概念:RDD 定义为弹性分布式数据集,包含了只读的、分区的、分布式计算的概念;RDD是个类1、一个数据分区的列表(hdfs的所有数据块的位置信息,保存在RDD类成员变量Array中)2、保存了数据块上面的计算方法,这个计算方法会应用到每一个数据块3、一个对其他RDD的依赖,是一个集合,spark就是通过这种依赖关系,像流水一样处理我们的数据   当分区的数据计算失败,只需要根据流...

2019-01-09 20:03:54 585

原创 Hadoop on yarn执行过程

yarn:只做运算资源的分配和调度,不参与用户程序内部工作,正因为如此,我们的yarn可以成为一个通用的调度平台,所以,包括我们的mr程序、storm程序、spark程序都可以运行在我们的yarn集群上mapreduce和yarn的交互过程:1、Client向Resource Manager请求运行一个程序2、Resource Manager给Client返回一个jobid和一个用于...

2019-01-09 14:30:00 342

原创 创建KeyValues对RDDS

map()函数 返回key/value例如,包含数行数据的RDD,把每行数据的第一个单词作为keyssc.textFile("/user/tast.txt").map(line=>(line.split(" ")(0),line))KeyValues对的RDDS的transformationsexample:{(1,2),(3,4),(3,6)}reduceByKey :作用:把相...

2019-01-09 10:19:12 194

原创 RDD介绍

transformation 转换:map:lines.map(word => (word,1))filter:lines.filter(word => word.cotains("hello"))flatmap 压扁:一个输入对应多个输出例如读取一个文本文件产生的结果 会全部在一层或者是一行 就是被压扁了val inputs=sc.textFile("/user...

2019-01-08 17:15:41 489

原创 spark架构及生态

通常当需要处理的数据量超过了单机尺度(比如我们的计算机有4GB的内存,而我们需要处理100GB以上的数据)这时我们可以选择spark集群进行计算,有时我们可能需要处理的数据量并不大,但是计算很复杂,需要大量的时间,这时我们也可以选择利用spark集群强大的计算资源,并行化地计算,其架构示意图如下Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作...

2019-01-08 10:39:18 371

原创 Spark Streaming介绍以及案例

概观Spark Streaming是核心Spark API的扩展,可实现实时数据流的可扩展,高吞吐量,容错流处理。数据来源:Kafka,Flume,Kinesis或TCP套接字等,可以使用高级函数进行复杂算法进行处理map,例如reduce,join和window。处理后的数据可以推送到文件系统,数据库等 它的工作原理:Spark Streaming接收实时输入数据...

2019-01-07 17:03:17 587

原创 设置免密码登录

1.生成公钥私钥  ssh-keygen2.把公钥放到authorized_keys里   cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys3.设置权限,不然不可用:   chmod 700 ~/.ssh   chmod 600 ~/.ssh/authorized_keys4.其他机器同样的操作,把需要免密码的机...

2019-01-07 15:45:02 104

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除