自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java对象头结构

Java对象(Object 实例) 结构包含三部分:对象头、对象体、对其子节,具体如下图所示对象的三个部分对象头对象头包括三个字段,第一个字段叫作Mark Word (标记字),用于存储自身运行时的数据,例如GC标志位、哈希码、锁状态等信息。第二个字段叫作Class Pointer (类对象指针),用于存放方法区Class对象的地址,虚拟机通过这个指针来确定这个对象是哪个类的实例。第三个字段叫作Array Length (数组长度)。如...

2021-12-08 18:46:13 2241 4

原创 AQS加锁流程(ReentrantLock)

定义全称是AbstractQueuedSynchronizer,AQS是JUC提供的一个用于构建锁和同步容器的基础类。JUC包内许多类都是基于AQS构建的,例如ReentrantLock、 Semaphore、 CountDownI atch、ReentrantReadWriteLock、 FutureTask 等。通过内置的 CLH(FIFO)队列的变种来完成资源获取线程的排队⼯作,将每条将要去抢占资源的线程封装成⼀个 Node节点来实现锁的分配,有⼀个int类变量表示持有锁的状态,通...

2021-12-02 18:46:26 823

原创 【图解】【源码】公平锁⾮公平锁

公平锁概念所谓公平锁,就是多个线程按照申请锁的顺序来获取锁,类似排队,先到先得。在获取锁的自由状态时,若锁可获取不会直接获取该锁,而是需要判断是否需要入队(AQS)。图解由如下图可知,tn线程创建成功,进行锁状态的判断,当能获取自由状态时,需要判断是否需要入队,若不需要直接进行加锁成功,若需要进行入队操作。获取锁流程的源码后续会有专门的章节来详细讲述。源码从代码中也清楚的看到,没有直接持有锁的操作,而是对队列进行操作。本文中只了解是对队列的操作即可,后续有专门文章对队列操..

2021-12-01 17:58:47 418

原创 三色标记法

基本原理当前主流编程语言的垃圾收集器基本.上都是依靠可达性分析算法来判定对象是否存活的,可达性分析算法理论上要求全过程都基于-一个能保障一致性的快照中才能够进行分析,这意味着必须全程冻结用户线程的运行。由于GC Roots相比起整个Java堆中全部的对象毕竟还算是极少数,且在各种优化技巧(如OopMap) 的加持下,它带来的停顿已经是非常短暂且相对固定(不随堆容量而增长)的了。可从GC Roots再继续往下遍历对象图,停顿时间就必定会与Java堆容量直接成正比例关系了:堆越大,存储的对...

2021-11-29 20:00:00 249

原创 【Spark 源码】1-Spark RPC

Spark 的 RPC 概述Spark 是一个 通用的分布式计算系统,既然是分布式的,必然存在很多节点之间的通信,那么 Spark不同组件之间就会通过 RPC(Remote Procedure Call)进行点对点通信。以下所有都是基于spark2.4.X版本进行分析学习的,该版本也是当前CDH 稳定版本spark中网络通信无处不在,例如-driver和master的通信,比如driver会向master发送RegisterApplication消息 ...

2021-11-23 22:00:00 1801

原创 [Kafka]消息超过最大值限制max.request.size

问题: 在抽取关系型数据库到kafka 中时,出现以下问题:max.request.size生产者客户端能发送消息的最大值,默认值为1048576B,1MB。不建议盲目修改,这个参数涉及其他的一些参数的联动,比如broker端的message.max.bytes参数,如果broker的message.max.bytes参数设置为10,而max.request.size设置为20,当发送一条大小为15B的消息时,生产者参数就会报错。因此需要连续修改以上多个参数,才能生效修改如下:mes

2021-11-04 10:02:39 12237

原创 Hive-执行计划操作符解析

操作符 描述 TableScanOperator 扫描hive表数据 ReduceSinkOperator 创建将发送到Reducer端的<Key,Value>对 JoinOperator Join两份数据 SelectOperator 选择输出列 FileSinkOperator 建立结果数据,输出至文件 FilterOperator 过滤输入数据 GroupByOperator Group By语句 MapJ..

2021-03-18 15:45:54 475

原创 Redis 集群内存限制

一 配置文件修改maxmemory 524288000maxmemory-policy volatile-lru此配置我在测试环境进行测试,所以内存设置为500M 为 上限。注意集群环境下每个节点的配置文件都需要进行修改。参数说明:maxmemory 为redis 的最大内存限制,不带单位默认为bytes。maxmemory-policy 共有八种淘汰策略 淘汰策略名称 策略含义 noeviction 默认策略,不淘汰数据;大...

2021-02-02 10:47:44 1468

原创 Phoenix + Hbase 用户权限

目录一 Hbase 启用授权配置1 hbase 开启安全授权2 添加超级管理员配置3 重启相关服务和部署客户端设置。4 创建对应用户二 HBase的 ACLs 权限控制说明1 HBase ACLs的访问级别2 HBase 授权范围3 Hbase 权限授权测试授权查看权限:收回权限测试三 Phoenix 权限1 zhangxh用户启动客户端2 修改权限3 查询测试四 Phoenix 映射Hbase NameSpace1 修改两..

2020-11-30 11:31:15 2003

原创 MongoDB 控制内存使用量

增加storage.wiredTiger.engineConfig.cacheSizeGB配置项1 完整配置文件如下:storage: #dbPath: /var/lib/mongodb dbPath: /data/mongodb/singleton/data journal: enabled: true# engine:# mmapv1: wiredTiger: engineConfig: cacheSizeGB: 1systemLo

2020-10-09 11:55:13 501

原创 Flink 自定义读取mysql数据源

1 pom 依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.

2020-08-15 18:00:41 1612 2

原创 centos7 在线安装nginx

1、添加源  默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了Centos的源地址。因此可以如下执行命令添加源:sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm2、安装Nginx  通过yum search nginx看看是否已经添加源成功。如果成功则执行下列命令安装Nginx。sudo yum i.

2020-08-10 18:18:50 386

原创 优雅的停止SparkStreaming

背景:流式任务需要7*24小时执行,但是有时涉及到升级代码需要主动停止程序,但是分布式程序,没办法做到一个个进程去杀死,所有配置优雅的关闭就显得至关重要了。可以考虑使用外部文件存储或者关系型数据库、缓存等来控制内部程序关闭。此例子使用hdfs创建指定文件来控制程序的关闭,想要更好的在前端进行控制,可以在注册程序中修改标志源。import org.apache.hadoop.conf.Configurationimport org.apache.hadoop.fs.{FileSystem, Pat

2020-07-29 17:33:38 383 1

原创 Sqoop增量更新(自动更新参数)

1原始导出脚本:sqoop import --connect jdbc:mysql://dev07:3306/dianpingdb --username root --password root --table category --target-dir /user/zxh/sqoop1 --incremental lastmodified --check-column updated_at --merge-key id --last-value "2019-06-12 12:39:43" --m 1

2020-05-26 15:21:46 1631 2

原创 【解决方案】pyspark 初次连接mongo 时报错Class not found exception:com.mongodb.spark.sql.DefaultSource

部分报错如下:Traceback (most recent call last): File "/home/cisco/spark-mongo-test.py", line 7, in <module> df = spark.read.format("com.mongodb.spark.sql.DefaultSource").load() ...

2020-02-20 16:06:55 2549

原创 elasticsearch-7.3.1 IK热加载自动以分词和停用词

背景:使用本地的自定义词典和停用词词典每次都需要重启ES,这对线上是一个很不好的体验,于是需要进行不重启热加载分词库。一 搭建远程词库(采用nginx)1 配置nginx,添加以下配置。server { listen 8848; server_name _1; location /dict { alias /data/dict...

2019-12-06 10:31:32 1331

原创 python3的urllib3和requests及问题解决

1 版本变化Python2 之前使用 urllib2 库,在版本升级后出现问题,因为在3版本中库进行了整合,具体变动如下:Py3.x:删除了Urllin2库,统一更改为UrllibUrllib库变化:在Pytho2.x中使用import urllib2——-对应的,在Python3.x中会使用import urllib.request,urllib.error。在Pytho2....

2019-11-27 09:29:24 3382

原创 hdfs 安全模式及解决

一 安全模式NameNode在重启的时候,DataNode需要向NameNode发送块的信息,NameNode只有获取到整个文件系统中有99.9%(可以配置的)的块满足最小副本才会自动退出安全模式。最小副本和那个99.9%阀值可以通过下面配置来设定: <property> <name>dfs.namenode.replication.min&lt...

2019-10-24 09:09:18 723

原创 ubuntu18.04 下安装pyenv并使用pyenv+virtualenv创建python虚拟环境

安装pyenv1.安装下载工具curl sudo apt-get install curl2.使用curl下载pyenv curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 会出现提示 export PATH="~/.pyenv/bin:$P...

2019-10-15 10:27:27 1002

原创 elasticsearch7.3 在启动时设置heap的大小

es节点的默认的heap内存大小是 1G 大小,在实际生产中,很容易导致内存溢出而导致进程被kill掉。所以我们一般会自己配置自己的,以前的版本可以通过export ES_HEAP_SIZE=10g或者./bin/elasticsearch -Xmx10g -Xms10g来设置自己的堆内存的大小,在新的版本使用上述命令会设置不成功。查询官网后得知可以通过如下命令进行设置ES_JAVA_OP...

2019-09-11 17:39:29 3153

原创 jmeter压力测试(踩坑)报错:java.net.BindException: Address already in use: connect

最近在写搜索接口服务,写完接口进行压力测试,但是在长期线程较高的进行测试时会报如下错误:排除问题:首先先查看服务器的日志,发现没有报错。然后查看nginx数据,发现请求数和测试发出的请求数不一致,服务器接收到的少,就想到丢失请求。后来经过查找资料了解是windows 机器的问题,原因:windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它...

2019-08-30 17:01:48 37817 8

原创 ubuntu系统上安装Memcache

注:Memcache是项目名,memcached是服务名。先安装libevent #wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz# tar zxvf libevent-2.1.8-stable.tar.gz# cd...

2019-08-29 17:48:36 103

原创 elasticsearch-5.6.3 集成 ik 分词器

1 首先要下载对应版本的ik分词器(1)进入到elasticsearch 的目录下cd /opt/elasticsearch-5.6.3/plugins/(2)下载5.6.3版本的ik分词器 :wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.3/elasticsea...

2019-08-02 17:17:11 487

原创 elasticsearch-5.6.3安装 及 head 插件安装

一、环境:一台服务器(可以是集群,为了方便测试和安装我只用了一台),若是多台需要确保机器互相ping的通。且所有机器都需要装了jdk环境(并不是自带的openjdk),因为es依赖java运行环境。服务器信息:10.1.1.18 ubuntu二、安装部署(两台服务器均做如下处理)1.官网下载linux下es安装包,https://www.elastic.co/downloads/...

2019-08-02 09:49:03 767

转载 pyspark 提交任务参数

spark-submit命令利用可重用的模块形式编写脚本,并且以编程方式提交作业到Spark。spark-submit命令spark-submit命令提供一个统一的API把应用程序部署到各种Spark支持的集群管理器上,从而免除了单独配置每个应用程序。命令行参数下面逐个介绍这些参数:--master:用于设置主结点URL的参数。local:用于执行本地机器的代码。Spark运行一...

2019-07-16 16:30:22 4422

原创 spark on hive (spark 使用hive元数据)

以Python为例子:spark = SparkSession.builder.config("hive.metastore.uris","thrift://10.1.1.18:9083").appName("tSalesItem").enableHiveSupport().getOrCreate()spark.sql("show databases").show()异常处理:#查...

2019-07-08 18:05:28 1560

原创 mongodb性能分析方法:explain()

为了演示的效果,我们先来创建一个有200万个文档的记录。(我自己的电脑耗了15分钟左右插入完成。如果你想插更多的文档也没问题,只要有耐心等就可以了。)1 for(var i=0;i<2000000;i++){2 db.person.insert({"name":"ryan"+i,"age":i});3 } MongoDB 3.0之后,expla...

2019-07-01 17:36:15 315

原创 python init方法和new方法的区别和解析

一、__init__ 方法是什么?(init前后的线是双下划线)使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候。例如: 1 # -*- coding: utf-8 -*- 2 3 class Person(object): 4 """Silly Person""" 5 6 ...

2019-06-20 14:56:52 1441

原创 linux 自动更新时间

NTP服务器(上海) :ntp.api.bz中国ntp服务器:cn.pool.ntp.orgpool.ntp.org安装NTP客户端:yum -y install ntp修改时区为Asia:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimevim/etc/sysconfig/clo...

2019-06-13 15:29:20 1762

原创 【hive问题】FAILED: ParseException line 19:69 Failed to recognize predicate 'timestamp'. Failed rule: 'i

完整错误信息:FAILED: ParseException line 19:69 Failed to recognize predicate 'timestamp'. Failed rule: 'identifier' in table or column identifier咋使用hivesql,突然出现了这个错误,感觉应该是关键字或者保留字导致的,但是我将原sql中的timestamp...

2019-06-06 16:12:49 3663

原创 使用shell比较两个文本的差异

一般工作中会遇到比较两个文本文件的不同,类似于第二天新增数据、或者修改数据统计。我查阅资料查到一下两种方法。说明 $1 $2 为要比较的两个文本文件 此处使用参数代替1 grep -F -v -f $1 $2 |sort |uniq-f<范本文件>或--file=<范本文件>指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文...

2019-05-31 10:26:07 4725

原创 Hive 安装部署

1.Mysql 安装 1.1 在线安装 MySQL 使用 yum 在线安装 mysql:yum install mysql-server 1.2 查看 mysql 服务状态 使用 service mysqld status 命令查看 mysql 状态 1.3 启动 mysql 服务 使用 service mysqld start 命令启动 mysql 服务 1.4 设置...

2019-05-29 17:47:59 924

原创 flume保存文件到hdfs的时候报错

一 、flume配置sink向hdfs中写入文件,在启动的时候遇到的报错问题1. Failedtostartagentbecausedependencieswerenotfoundinclasspath.Errorfollows.java.lang.NoClassDefFoundError:org/apache/hadoop/io/SequenceFile...

2019-05-26 18:48:16 1115

原创 HDFS存储文件的过程详解

以下内容基本都是自己的语言进行描述的,并不全是官方的说法,若有哪里说的不对可以在下面进行交流。一 、角色 : Namenode ,DataNode ,Client1 NameNode namenode 负责维护整个文件系统的信息,包括:整个文件树,文件的块分布信息,文件系统的元数据,数据复制策略等 以下简称NN2 DataNode存储文件内容,负责文件实际的读写操作...

2019-05-22 17:57:14 2051

原创 Access denied for user 'root'@'localhost' (using password: YES)【mysql密码错误】

一般这个错误是由密码错误引起,解决的办法自然就是重置密码。假设我们使用的是root账户。1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:#vim /etc/my.cnf(注:windows下修改的是my.ini)在文档内搜索mysqld定位到[mysqld]文本段:/mysqld(在vim编辑状态下直接输入该命令可搜索文本内容)在[mysqld]后面任意一行添...

2019-05-18 20:49:19 374

原创 【问题解决】hbase 集群启动失败

异常信息如下:ABORTING region server slave1,60020,1557348082471: Unhandled: org.apache.hadoop.hbase.ClockOutOfSyncException: Server slave1,60020,1557348082471 has been rejected; Reported time is too far ou...

2019-05-08 21:02:30 1509

原创 ubuntu安装mysql后无法远程连接

安装MySQL数据库后一般会遇到远程计算机不能连接的问题,具体问题需要我们排查。第一种:远程授权GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;root 和 123 为自己要授权的账号和密码第二种:配置文件(ubuntu下:/etc/mysql/mysql.c...

2019-04-23 11:58:14 2324

原创 Zookeeper 安装

1 下载zookeeperApache 版本下载地址:https://archive.apache.org/dist/CDH 版本下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/根据需要下载自己的版本即可。我习惯将软件安装在/data目录下 ,2 解压Zookeepertar -zxvf zookeeper-3....

2019-04-19 17:20:20 162

原创 Kafaka集群安装部署

1. 下载Kafka 版本选择:Flume 对 Kafka 版本的要求:http://flume.apache.org/FlumeUserGuide.html#kafka-sinkSpark 对 Kafka 版本的要求:http://spark.apache.org/docs/2.3.0/structured-streaming-kafka-integration.htmlKafka 版...

2019-04-18 09:10:49 789

原创 Spark资源调度和任务调度

整体流程图如下:Spark资源调度和任务调度的流程:启动集群后,Worker节点会向Master节点汇报资源情况,Master掌握了集群资源情况。当Spark提交一个Application后,根据RDD之间的依赖关系将Application形成一个DAG有向无环图。任务提交后,Spark会在Driver端创建两个对象:DAGScheduler和TaskScheduler,DAGSched...

2019-04-17 16:40:52 166

空空如也

空空如也

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

TA关注的人

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