- 博客(57)
- 收藏
- 关注
原创 redis安装redis主从复制redis哨兵
简单记录一下1.redis安装# 安装gccyum install -y gcc#下载wget http://download.redis.io/releases/redis-5.0.3.tar.gz#解压tar -zxf redis-5.0.3.tar.gz#编译cd redis-5.0.3make#安装make install PREFIX=/usr/local/redis2.redis主从 1主2从#进入redis目录,新建conf配置目录cd /us
2020-09-07 17:58:48
210
原创 多线程按递增时间段查单确定订单状态
背景在支付付款(账户打款)场景中,我们调用支付接口给用户付款后,一般不会有异步回调告诉我们这笔订单的状态,需要我们开起一个线程 每隔1秒3秒5秒30秒5分钟30分钟1小时这样的时间间隔去查询订单的状态,如果经过4次查询也就是确定了支付最终状态(打款成功,打款失败)就去修改订单的状态,如果是打款中就需要隔一段时间再去查询。先说最简单的一种方法如果查一笔订单我们就启动一个线程去查询订单状态,第一次查询付款中的话就让线程sleep1秒,第二次就让线程sleep3秒,第三次...... 直到确定...
2020-09-04 11:08:16
557
原创 实现电商商品搜索页
分析这个页面,包含查询结果品牌的聚合,商品分类的聚合,商品规格聚合,商品属性聚合,搜索关键字高亮。高亮字段查询 NativeSearchQueryBuilder searchQuery = new NativeSearchQueryBuilder(); List<String> highlightFields = new ArrayList<String>(); //es索引中的字段 highlightFields...
2020-09-02 10:47:14
815
原创 k8s 容器启动时传递镜像运行时参数
背景我们使用springboot 打成的jar构建docker镜像上传到barbor镜像库之后,如果镜像中的参数发生了变化(springboot application.properties中的启动参数变更),比如mysql的地址变更了。不必修改配置文件,重新打包上传,修改k8s容器启动配置文件,重新启动容器即可Docker file如下:FROM harbor.ht.com/micro-service/openjdk:8-jreMAINTAINER xxx xxx@imooc.comC
2020-08-31 15:53:59
8201
原创 redis通用缓存工具
背景为了更好的分类管理redis中的key 从redis中取出key的时候,直接生成当时set的对象先定义自定义redisKey的接口public interface IRedisKey<T> { //redis key 失效时间 int expireSeconds(); //redis key 前缀 String getPrefix(); }BaseRedisKey抽象类,实现默认方法public abstract cla
2020-08-23 13:56:06
431
原创 thrift 入门 + 配置证书
1.thrift中定义枚举enum Operation { ADD = 1, SUBTRACT = 2, MULTIPLY = 3, DIVIDE = 4}# enum定义枚举# Operation 枚举类名称# ADD 具体某一个枚举的名称# 1 每个枚举定义序号2.thrift中的数据类型 * bool Boolean, one byte * i8 (byte) Signed 8-bit integer * i16
2020-08-19 17:14:15
1226
原创 harbor镜像仓库搭建 + 修改端口号
最重要:要先安装docker### 1.安装一些必要的系统工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2#添加软件源信息:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#更新 yum 缓存:sudo yum makecache fast#安装 Doc
2020-08-18 15:51:59
2798
1
原创 jpa 封装统一controller service dao所有模块的CRUD就都不用写了
背景 新增一个模块我们就要写一大堆CRUD代码,一般新增更新我们需要自己写(牵扯其它模块调用,业务逻辑),但是查询我们可以利用jpa来实现一个baseController,跟前端约定好查询方式,省去各种字段的查询加快项目进度。主要参考《Spring Data JPA从入门到精通》这本书,百度可以搜到pdf。ide是InteliJava 2020。 先把git地址贴出来:https://github.com/fantasticqiang/jpatest.git注意事项代码下载下来之...
2020-08-06 11:09:04
1492
原创 virtualBox使用kubeadm安装kubernetesV1.17 网卡配置
安装步骤按照kubord官网的文档,在阿里云上可以很轻松的成功搭建k8s集群,但是在笔记本电脑上使用virtualBox遇到很多问题,现总结如下。virtualBox网络配置 vbox采用双网卡方式。最开始尝试网卡1 “网络地址转换NAT”用于虚拟机访问外部网络;网卡2 “仅主机模式”用于虚拟机之间通信。按照kuboard中文档安装始终不成功,最后尝试网卡1 使用“NAT”网络可...
2020-04-08 14:31:06
637
原创 递归实现获取前端tree json格式数据
递归实现获取前端tree json格式数据问题描述代码实现问题描述为了表示各个业务实体的层级关系,后台系统中很多表结构设计的时候遵循类似下面这种结构。idpidname然而前端需要的数据结构为Tree JSON结构如下:level1_1level1_1Namechildrenlevel2_1level2_1Namechildren …level1_2...
2019-11-25 18:15:15
611
原创 zookeeper单节点+基本命令+api
zk单节点配置配置zk,复制zoo.cfg.sample-->zoo.cfg,修改dataDir即可[zk/conf/zoo.conf]# The number of milliseconds of each ticktickTime=2000initLimit=10syncLimit=5dataDir=/home/centos/zookeeperclientPor...
2018-12-12 14:35:51
315
原创 hbase基本命令,api操作
hbase单节点安装 启动一个单节点的hbase方便我们测试,学习。在官网下载hbase.tar.gz安装包 https://hbase.apache.org/修改配置文件${hbase}/conf/hbase-env.sh,指定jdk位置【hbase-env.sh】export JAVA_HOME=/usr/local/jdk【hbase-site.xml】指定hbase的data路径,z...
2018-06-29 17:21:10
1320
原创 hadoop--搭建hbase集群
背景我们已经搭建了HA高可用的hdfs集群,现在要在hdfs集群的基础上搭建hbase集群。可以看我之前的一篇hdfs集群搭建,https://blog.csdn.net/fantasticqiang/article/details/80707837自行官网下载hbase,我这里选用1.2.3版本修改hbase配置文件1. hbase-env.sh//#配置一下JAVA环境export JAVA...
2018-06-26 15:21:00
224
原创 配置服务自启动,配置zookeeper服务,chkconfig方式
需求 我们需要三台主机在启动的时候,zookeeper集群自动启动。把zookeeper做成服务//切换到root用户>su root//在"/etc/rc.d/init.d/"目录下,新建zookeeper文件>touch zookeeper//添加可执行权限>chmod +x zookeeper//编辑zookeeper文件,添加如下内容,其中的路径填自己具...
2018-06-26 11:52:25
1281
原创 virtualbox ubuntu系统挂载window上的目录
背景在virtual box 虚拟机中ubuntu系统访问window上的资源,每次移动、查找文件都不方便。我们可以挂载相应的目录到ubuntu系统中,这样可以方便的访问window上的资源。virtual box设置共享文件夹添加共享文件夹 选择一个盘符,这里我们选D盘,给共享文件夹起一个名字,勾上“只读分配”,“自动挂载”,“固定分配”。点击ok在ubuntu命令行窗口中“df”命令查看...
2018-06-23 18:23:39
2583
原创 Hadoop-Apache Avro数据序列化系统
背景 Avro由hadoop之父Doug Cutting开发,旨在解决hadoop中序列化的语言可移植性。是一种能够被多种语言(C,C#,C++,JAVA,PHP,Python,Ruby)处理的数据格式。 Avro模式通常用JSON来写,使用二进制格式进行编码。Avro是自描述语言,数据结构和数据都存在文件中。文件可压缩可切割。Avro中的类型 原始数据类型 原始数...
2018-06-23 17:10:22
396
原创 hive中的事物操作
背景 hive中默认是不支持事物的,Hive的常见也一般都是一次写入,频繁读取。加入事物之后,支持update、insert、delete操作保存的文件格式必须为crc格式file需要修改配置文件开启事物表必须分桶 找到hive目录下conf文件夹中的hive-site.xml文件,需要修改的项和它对应的value值:These configuration parameters mus...
2018-06-22 10:50:50
971
原创 hive中的distribute by
1.背景 hive中有一个store表,字段分别是"商店所属人标识"(merid),“商户余额(money)”,“商店名称(name)”。求每个法人下属的商店的余额按照降序排序。//merid,money,nameB 10 store_B_4A 12 store_A_1A 14 store_A_2B 15 store_B_1B 19 store_B_2B 30 sto...
2018-06-22 10:07:56
58570
4
原创 hive--安装hive,基本命令
说明 对hive基本命令进行实战,要求本机安装着mysql和启动hdfs。 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表, 并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计, 不必开发专门的MapReduce应用,...
2018-06-20 17:37:25
833
原创 hadoop二次排序应用,实现两表连接join操作
背景 有两个文件customer.txt,orders.txt分别记录着客户的信息和客户的订单信息。我们要实现数据库中的join操作,类似于“select a.*,b.* from A a,B b where a.cid = b.cid;”。//customer.txt中记录的是客户信息//cid,name,age1,tom1,122,tom2,133,tom3,144,tom4,...
2018-06-20 13:48:05
766
原创 mysql存储过程和函数
概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提...
2018-06-18 15:01:31
178
原创 hadoop HA高可用集群搭建,ZooKeeper自动容灾
背景因为hadoop集群只有一个namenode,如果机器或者进程不可用之后,整个集群就瘫痪了,namenode节点存在单点故障的问题。HA架构 通常一个典型的HA集群有两个namenode,在任一时刻只有一个namenode是active状态,另外一个namenode处于standby待命状态。active激活态的namenode负责客户端的操作,standby待命态扮演slave从节点的...
2018-06-15 17:31:25
2464
原创 多线程-利用semaphore多线程顺序打印ABC
semaphore介绍先说它的构造方法: //参数permits是许可的数量 public Semaphore(int permits) { sync = new NonfairSync(permits); } //第二个参数是,是否是公平锁public Semaphore(int permits, boolean fair) { sync...
2018-06-15 10:42:06
1470
原创 hadoop配置机架感知,原理
背景“hadoop权威指南”里面有说明,配置机架感知的目的就是要最大程度发挥hadoop的性能,要做到这点就是知道hadoop集群的网络拓扑结构(it knows the topology of your network)。如果集群中的机器都跑在一个机架上,那么我们什么都不用做,集群下的节点默认都是在“/default-rack”下的,可以启动hadoop集群的时候查看logs/namenode....
2018-06-13 11:13:44
1699
原创 hadoop读写mysql数据库
需求描述我们有两张表“成绩表”和“总分表”,从成绩表中计算出每个学生的总成绩,记录到总分表中。表结构//成绩表记录学生id,课程id,这科分数CREATE TABLE `score` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sid` int(11) DEFAULT NULL, `cid` int(11) DEFAULT NULL, `sc...
2018-06-12 16:25:07
6867
原创 MySQL数据库无法远程连接的解决办法
远程登陆数据库的时候出现了下面出错信息: ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx'修改root用户可以从任意ip登录mysql -u root –p //root用户本机登录mysqlmysql>use mysql; //跳转到mysql库//执行下面语句会提示Error,不过没关系...
2018-06-12 14:53:27
23805
7
原创 hadoop链式处理
场景说明:hadoop是按照key的hash值来进行分区,假如分区后某个区的数据量很大,导致绝大多数的数据发往一个reducer节点,拖慢整个job的进度。
2018-06-10 17:58:50
331
原创 hadoop二次排序理解实战
描述MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的。在我们实际的需求当中,往往有要对reduce输出结果进行二次排序的需求。输入数据1 -122 -203 104 -55 151 202 303 404 255 301 402 413 424 435 441 -302 -313 -324 -...
2018-06-08 10:41:14
1414
原创 hdfs使用随机采样器进行分区划分实现全排序,totalOrderPartitioner,sampler
问题描述现在有个sequenceFile文件里面记录着年份和温度,key是年份value是温度,找出每年的最高气温然后按照年份递增排序。因为reducer默认会对key进行排序,解决办法有两种:第一种使用一个reducer,第二种是使用分区函数对年份进行分段,在每一个段是递增排序,几个reducer处理后的文件拼接后在整体上也是有序的。自定义的Mapper只需要把key-value发往Reduce...
2018-06-07 10:47:37
650
原创 hadoop sequenceFile详解
hadoop不仅可以处理文本信息,还可以处理二进制格式数据,sequenceFile就是这样的文件。有以下特点:可分割支持压缩每一行都是一个key value对可以设置同步点SequenceFile的格式是由一个header 跟随一个或多个记录组成。前三个字节是一个Bytes SEQ代表着版本号,同时header也包括key的名称,value class , 压缩细节,metadata,以及Syn...
2018-06-06 16:35:42
1632
原创 ubuntu linux下安装idea创建桌面快捷方式
在windows上测试hadoop生态中的一些程序的时候,难免出现一些莫名其妙的错误,所以一些测试、编写程序的时候转战到ubuntu系统,下载idea.tar.gz解压。每次启动的时候都需要到idea目录bin下执行:./idea.sh这样比较麻烦,现在我们在桌面上创建快捷方式://创建快捷方式touch idea.desktop//编辑此文件vi idea.desktop//添加一下内容...
2018-06-06 14:18:11
18240
原创 ubuntu设置静态ip后不能联网问题,Ubuntu:未找到合法的活动链接
问题描述在安装ubuntu14之后,以下命令编辑ip配置文件,添加静态ip如下,发现不能联网vim /etc/network/interfacesauto eth0iface eth0 inet staticaddress 192.168.1.215netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 192.168.1.1ne...
2018-06-05 18:03:28
5484
3
原创 hdfs集群节点的服役和退役(上线 下线)
问题描述我们在维护hadoop集群的时候,需要动态增加和删除datanode或者yarn管理节点,而不是停掉整个集群。首先,hadoop配置文件目录下的hdfs-site.xml中维护这集群“白名单”和“黑名单”两个文件,如果没有的话需要在配置文件中添加这两个属性。<property> <!-- 白名单信息--> <name>dfs.hosts</...
2018-06-02 12:10:06
4539
原创 hdfs基本命令操作
hdfs基本命令操作使用oiv查看hadoop镜像文件进入hadoop name目录下,/home/hadoop/hadoop/tmp/dfs/name/current。输入: "hdfs oiv"查看oiv命令使用详情。hdfs oiv -i fsimage_0000000000000000128 -o a.xml -p XML可以使用编辑器查看xml文件,上面维护着文件的目录、权限、block...
2018-06-02 10:05:37
1429
原创 hdfs api基本操作
以下是hadoop 基本API使用,包括文件上传,文件下载,查看文件目录,创建文件夹,删除文件。package com.lqq.hadoop;import java.io.ByteArrayOutputStream;import java.io.InputStream;import org.apache.hadoop.conf.Configuration;import org.apac...
2018-05-31 17:46:12
537
转载 VirtualBox修改现有虚拟磁盘大小
之前创建的虚拟磁盘10G,现需要更大的空间,而又不想使用新增虚拟磁盘的方法。通过查看资料发现VirtulBox提供的VBoxManage modifyhd命令可以解决,该命令的具体用法:VBoxManage modifyhd [–type normal|writethrough|immutable|shareable|readonly|multiattach][–autoreset on|off]...
2018-05-31 14:29:01
1797
原创 linux shell编写脚本,执行命令同时操作多台主机
执行命令同时查看多台主机jps#!/bin/bashparams=$@i=201for (( i = 201 ; i <= 204 ; i = $i + 1 )) ; do echo ============= s$i $params ============= ssh s$i "$params"done执行./xcall.sh jps命令,注意需要在/usr/lo...
2018-05-30 11:25:29
7870
5
原创 yum修改阿里源+yum安装卸载软件+yum制作iso镜像文件
1. yum 修改源镜像地址为ali-------------------------------------- cd /etc/yum.repos.d vi CentOS-Base.repo su root ##下载配置文件,保存下载的文件到指定的文件中 -o:将文件保存为命令行中指定的文件名的文件中 -O:使用URL中默认的文件名保存文件到本地 curl -o /etc/yum.repos...
2018-05-29 16:59:15
962
原创 elasticsearch备份恢复
1、重新导入数据POST /_snapshot/my_hdfs_repository/snapshot_1/_restore{ "indices": "index_1", "ignore_unavailable": true, "include_global_state": true, "rename_pattern": "index_(.+)", "ren
2018-05-27 13:48:20
805
原创 elasticsearch集群snapshot备份
# 1 安装插件:elasticsearch-plugin install repository-hdfs# 2 移除插件:elasticsearch-plugin remove repository-hdfs# 3 查看es集群nodescurl -XGET 'http://es02:9200/_cat/nodes?pretty'# 4 查看es集群健康状况curl -XGET 'http://...
2018-05-27 12:25:18
1628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人