<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jamesjxin的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jamesjxin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jamesjxin]]></copyright><item><title><![CDATA[ES特定场景性能优化]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/107080533</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/107080533</guid><author>jamesjxin</author><pubDate>Thu, 02 Jul 2020 11:23:12 +0800</pubDate><description><![CDATA[ES特定场景性能优化
1. Overview
本文主要介绍一下Elasticsearch（后文简称ES）做相关基准测试的流程，及分享一些我们做过的一些测试结论。
简要说明下我们使用情况：
宽表的用户画像OLAP分析场景，集群规模200节点，数据量30T左右全热数据，24h更新及查询，总数据量1500亿，日更新200亿。
2. 基准测试
2.1 测试流程
由于 ES 是近乎线性扩展的分布式系统，所以对上述需求可以总结成同一个测试模式：
​    1. 使用和线上集群相同硬件配置的服务器搭建一个单节点集群。
​]]></description><category></category></item><item><title><![CDATA[Spark源码分析-spark集群启动及任务执行]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/74958908</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/74958908</guid><author>jamesjxin</author><pubDate>Tue, 11 Jul 2017 14:12:36 +0800</pubDate><description><![CDATA[注： 因为基于Akka的Actor的RPC版本相对容易理解一点，本文分析使用的Spark版本如下：<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>1.3.1</version>
</dependency>集群启动过程分析Mast]]></description><category></category></item><item><title><![CDATA[Logrotate日志切分]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/51274491</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/51274491</guid><author>jamesjxin</author><pubDate>Thu, 28 Apr 2016 15:15:06 +0800</pubDate><description><![CDATA[logrotate 程序是一个日志文件管理工具。用来把旧的日志文件更名或删除，并创建新的日志文件，我们把它叫做“转储”。是个使日志轮替的程序，有了它就不用看着自己的日志体积一天天的变大，而可以根据你自己的需求来设定日志转储。Logrotate介绍Logrotate通常是基于CRON来运行的，其实现脚本是/etc/cron.daily/logrotate/usr/sbin/logrotate /etc]]></description><category></category></item><item><title><![CDATA[Elasticsearch写入性能优化]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/50512106</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/50512106</guid><author>jamesjxin</author><pubDate>Wed, 13 Jan 2016 17:26:37 +0800</pubDate><description><![CDATA[性能测试建议
在一个节点的一个分片，不设置副本，测试性能
在完全默认设置上记录性能数据，作为测试的基准线
确保性能测试持续30分钟以上以确认长时间的性能；短时间的测试可能不会碰到segment合并和GC，无法确认这些因素的影响
每次基于默认基准线更改一个参数，如果性能有提升就保留设置，并基于此设置做后续的测试
bulk使用建议
每个请求大小建议在5-15MB，逐步增大测试,当接收到EsRejecte]]></description><category></category></item><item><title><![CDATA[hive常用字符串函数]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/48439859</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/48439859</guid><author>jamesjxin</author><pubDate>Mon, 14 Sep 2015 15:38:56 +0800</pubDate><description><![CDATA[字符串长度函数：length

 


Java代码  



语法: length(string A)  
返回值: int  
说明：返回字符串A的长度  
举例：  
hive> select length(‘abcedfg’) from dual;  
7  


 

 

 

字符串反转函数：reverse

 


Java代]]></description><category></category></item><item><title><![CDATA[Hive函数row_number实现]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/48140189</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/48140189</guid><author>jamesjxin</author><pubDate>Mon, 31 Aug 2015 21:21:39 +0800</pubDate><description><![CDATA[需求：查询一批用户最后三次登陆时间，ip数据row_number实现”’import org.apache.hadoop.hive.ql.exec.UDF;public class RowNumber extends UDF {private static int MAX_VALUE = 50;
private static String comparedColumn[] = new String[]]></description><category></category></item><item><title><![CDATA[高效MacBook工作环境配置]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/47339573</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/47339573</guid><author>jamesjxin</author><pubDate>Fri, 07 Aug 2015 15:06:25 +0800</pubDate><description><![CDATA[FROM ：http://www.xialeizhou.com/?p=71&comefrom=http://blogread.cn/news/


本文记录整个配置过程，供新入手MacBook和觉得MacBook比较难用的同学参考。



1. 硬件提升

笔记本电脑的特点是携带方便，缺点是屏幕太小，因此你首先可能需要一个外接显示器，多一个屏幕会大大减少你切换应用程序的次数，显著]]></description><category></category></item><item><title><![CDATA[HBase技术介绍]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/47104855</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/47104855</guid><author>jamesjxin</author><pubDate>Tue, 28 Jul 2015 14:24:20 +0800</pubDate><description><![CDATA[HBase简介

HBase – Hadoop Database，是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统，利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBase是Google Bigtable的开源实现，类似Google Bigtable利用GFS作为其文件存储系统，HBase利用Hadoop HDFS作为其文件存储系统；Google运行M]]></description><category></category></item><item><title><![CDATA[海量数据处理 算法总结]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/46917271</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/46917271</guid><author>jamesjxin</author><pubDate>Thu, 16 Jul 2015 21:05:33 +0800</pubDate><description><![CDATA[1. Bloom Filter


【Bloom Filter】
Bloom Filter（BF）是一种空间效率很高的随机数据结构，它利用位数组很简洁地表示一个集合，并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有可能会出现错误判断，但不会漏掉判断。也就是Bloom Filter判断元素不再集合，那肯定不在。如果判断元素存在集合中，]]></description><category></category></item><item><title><![CDATA[Hive sql语法详解]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/46917225</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/46917225</guid><author>jamesjxin</author><pubDate>Thu, 16 Jul 2015 21:02:32 +0800</pubDate><description><![CDATA[1.  DDL 操作




DDL



•建表
•删除表
•修改表结构
•创建／删除视图
•创建数据库
•显示命令



建表：


CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
  [(col_name data_type [COMMENT col_comment], ...)] 
  []]></description><category></category></item><item><title><![CDATA[Redis配置文件详解]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/46878173</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/46878173</guid><author>jamesjxin</author><pubDate>Tue, 14 Jul 2015 15:03:15 +0800</pubDate><description><![CDATA[查看redis.conf当前有效配置：
sed 's@^[# ].*$@@g' /usr/local/redis/etc/redis.conf
 | awk '{if (length !=0) print $0}'





1. Redis默认不是以守护进程的方式运行，可以通过该配置项修改，使用yes启用守护进程
daemonize yes

2. 当Redis以守护进程方]]></description><category></category></item><item><title><![CDATA[hbase shell基础和常用命令详解]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/46874611</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/46874611</guid><author>jamesjxin</author><pubDate>Tue, 14 Jul 2015 10:58:17 +0800</pubDate><description><![CDATA[From: http://www.jb51.net/article/31172.htm
基础知识记录，方便查阅 
1. 简介 

HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable：一个结构化数据的分布式存储系统》。HBase是Google Bigtable的开源实现，它利用Hadoop HDFS作为其文件存储系统，利用Hadoop MapReduc]]></description><category></category></item><item><title><![CDATA[怎么解决java.lang.NoClassDefFoundError错误]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/46606307</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/46606307</guid><author>jamesjxin</author><pubDate>Tue, 23 Jun 2015 15:22:29 +0800</pubDate><description><![CDATA[前言在日常Java开发中，我们经常碰到java.lang.NoClassDefFoundError这样的错误，需要花费很多时间去找错误的原因，具体是哪个类不见了？类明明还在，为什么找不到？而且我们很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混，事实上这两个错误是完全不同的。我们往往花费时间去不断尝试]]></description><category></category></item><item><title><![CDATA[工厂的进化]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/46441311</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/46441311</guid><author>jamesjxin</author><pubDate>Wed, 10 Jun 2015 14:12:37 +0800</pubDate><description><![CDATA[本文从一个简单示例的需求不断衍化过程，来分析理解简单工厂，工厂方法，抽象工厂模式。首先看一下初始示例public interface Car {    public void drive();
}public class BenzCar implements Car {    @Override
    public void drive() {
        System.out.println]]></description><category></category></item><item><title><![CDATA[Adaptor&Decorator&Facade模式分析]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/46424001</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/46424001</guid><author>jamesjxin</author><pubDate>Tue, 09 Jun 2015 10:57:20 +0800</pubDate><description><![CDATA[本文目的在于对比分析Adaptor,Decorator,Facade这三种设计模式的差异，加深对这几种设计模式的理解。
    
        模式
        说明     
    
    
        Adaptor
        把接口A的具体实现转换成对接口B的实现，以实现对B接口调用的客户能使用A提供的功能。     
    
    
        Decorator]]></description><category></category></item><item><title><![CDATA[MySQL 加锁处理分析]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/45965519</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/45965519</guid><author>jamesjxin</author><pubDate>Mon, 25 May 2015 08:35:24 +0800</pubDate><description><![CDATA[1    背景    1


1.1    MVCC：Snapshot
 Read vs Current Read    2


1.2    Cluster
 Index：聚簇索引    3


1.3    2PL：Two-Phase
 Locking    3


1.4    Isolation
 Level    4


2    一条简单SQL的加]]></description><category></category></item><item><title><![CDATA[netty源码分析(二)－处理请求]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/45222681</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/45222681</guid><author>jamesjxin</author><pubDate>Thu, 23 Apr 2015 15:46:34 +0800</pubDate><description><![CDATA[上一篇对netty的启动过程做了分析，netty源码分析(一)-启动.本篇将对netty处理请求的主要过程进行源码层面分析。根据上一篇的最后部分内容我们知道，netty启动后会不断循环accept请求        public void run() {
            final Thread currentThread = Thread.currentThread();]]></description><category></category></item><item><title><![CDATA[ThreadLocal分析]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/45173201</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/45173201</guid><author>jamesjxin</author><pubDate>Tue, 21 Apr 2015 17:17:42 +0800</pubDate><description><![CDATA[从概念上理解，threadlocal使变量在多个线程中相互隔离实现线程安全，threadlocal包装的变量最终都专属于对应的每个线程，线程之间相互独立，用一个具体实现来说明：public interface Consumer {
    int consume();
}
public class ComsumeThread implements Runnable {    private Cons]]></description><category></category></item><item><title><![CDATA[netty源码分析(一)-启动]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/45166241</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/45166241</guid><author>jamesjxin</author><pubDate>Tue, 21 Apr 2015 09:34:24 +0800</pubDate><description><![CDATA[对于netty的理解，首先要熟悉NIO相关的概念，可以参考学习这里：Java NIO以NioServerSocket实现为例，netty的启动过程分析：netty的启动入口，我们一般会这样配置：    ChannelFactory serverChannelFacory = new NioServerSocketChannelFactory(Executors.newCachedThreadPool]]></description><category></category></item><item><title><![CDATA[理解Java对象序列化]]></title><link>https://blog.youkuaiyun.com/jamesjxin/article/details/8605040</link><guid>https://blog.youkuaiyun.com/jamesjxin/article/details/8605040</guid><author>jamesjxin</author><pubDate>Sat, 23 Feb 2013 12:41:26 +0800</pubDate><description><![CDATA[1. 什么是Java对象序列化

Java平台允许我们在内存中创建可复用的Java对象，但一般情况下，只有当JVM处于运行时，这些对象才可能存在，即，这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中，就可能要求在JVM停止运行之后能够保存(持久化)指定的对象，并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。

使用Java对象序列化，在保存对象时，会把]]></description><category></category></item></channel></rss>