<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mllhxn的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mlljava1111</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mlljava1111]]></copyright><item><title><![CDATA[log4j日志写入不同目录]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/84982751</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/84982751</guid><author>mlljava1111</author><pubDate>Thu, 13 Dec 2018 09:58:01 +0800</pubDate><description><![CDATA[包含所有日志 


private static Logger logger = Logger.getLogger(xxx.class.getName());


log4j.rootLogger=info,All
log4j.appender.All=org.apache.log4j.ConsoleAppender
log4j.appender.All.Target=System.out
log...]]></description><category></category></item><item><title><![CDATA[yarn 内存计算]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81536705</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81536705</guid><author>mlljava1111</author><pubDate>Thu, 09 Aug 2018 15:41:34 +0800</pubDate><description><![CDATA[

Spark的Excutor的Container内存有两大部分组成： 堆外内存和Excutor内存

  堆外内存(spark.yarn.executor.memoryOverhead)
      主要用于JVM自身的开销。 默认： MAX(executorMemory * 0.10, 384m)

 Excutor内存(spark.executor.memory)

 Execution: ...]]></description><category></category></item><item><title><![CDATA[Spark Shuffle 中 JVM 内存使用及配置内幕详情]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81536400</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81536400</guid><author>mlljava1111</author><pubDate>Thu, 09 Aug 2018 14:41:29 +0800</pubDate><description><![CDATA[引言

Spark 从1.6.x 开始对 JVM 的内存使用作出了一种全新的改变，Spark 1.6.x 以前是基于静态固定的JVM内存使用架构和运行机制，如果你不知道 Spark 到底对 JVM 是怎么使用，你怎么可以很有信心地或者是完全确定地掌握和控制数据的缓存空间呢，所以掌握Spark对JVM的内存使用内幕是至关重要的。很多人对 Spark 的印象是：它是基于内存的，而且可以缓存一大堆数据，...]]></description><category></category></item><item><title><![CDATA[配置管理库typesafe.config]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81316374</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81316374</guid><author>mlljava1111</author><pubDate>Tue, 31 Jul 2018 16:52:56 +0800</pubDate><description><![CDATA[Typesafe的Config库，纯Java写成、零外部依赖、代码精简、功能灵活、API友好。支持Java properties、JSON、JSON超集格式HOCON以及环境变量。它也是Akka的配置管理库.

纯java实现，无任何依赖
	充分的测试
	支持: Java properties, JSON, and a human-friendly JSON superset
	可以合并各种格式的...]]></description><category></category></item><item><title><![CDATA[Spark Streaming优雅的关闭策略优化]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81302203</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81302203</guid><author>mlljava1111</author><pubDate>Tue, 31 Jul 2018 14:01:24 +0800</pubDate><description><![CDATA[我们可以有两种方式来更加优雅的停止流程序，分别是通过http暴露服务，和通过HDFS做消息中转来定时扫描mark文件是否存在来触发关闭服务。

下面我们先来看下通过http暴露服务的核心代码：


/****
    * 负责启动守护的jetty服务
    * @param port 对外暴露的端口号
    * @param ssc Stream上下文
    */
  def daemonH...]]></description><category></category></item><item><title><![CDATA[spark读kafka数据 hbase存储]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81241291</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81241291</guid><author>mlljava1111</author><pubDate>Fri, 27 Jul 2018 17:26:25 +0800</pubDate><description><![CDATA[ 


package spark88.utils

import kafka.common.TopicAndPartition
import kafka.message.MessageAndMetadata
import kafka.serializer.StringDecoder
import kafka.utils.ZkUtils
import org.apache.hadoop.hbase...]]></description><category></category></item><item><title><![CDATA[spark 消费kafka 并发送 zookeeper存储]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81240519</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81240519</guid><author>mlljava1111</author><pubDate>Fri, 27 Jul 2018 16:57:11 +0800</pubDate><description><![CDATA[
package kafka4.utils

import kafka.common.TopicAndPartition
import kafka.message.MessageAndMetadata
import kafka.serializer.StringDecoder
import org.apache.curator.framework.CuratorFrameworkFactory
i...]]></description><category></category></item><item><title><![CDATA[编解码器(自定义协议)]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81221779</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81221779</guid><author>mlljava1111</author><pubDate>Thu, 26 Jul 2018 16:05:18 +0800</pubDate><description><![CDATA[本blog主要介绍： 
1. Codec 编解码器 
2. Decoder 解码器 
3. Encoder 编码器

netty提供了强大的编解码器框架，使得我们编写自定义的编解码器很容易，也容易封装个重用。

在网络应用中需要实现某种编解码器，将原始字节数据与自定义的消息对象进行互相转换。网络中都是以字节码的数据形式来传输数据的，服务器编码数据后发送到客户端，客户端需要对数据进行解码。编解码器由...]]></description><category></category></item><item><title><![CDATA[NIO——(选择器)Selector]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81217475</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81217475</guid><author>mlljava1111</author><pubDate>Thu, 26 Jul 2018 11:47:04 +0800</pubDate><description><![CDATA[1. Selector简介

选择器提供选择执行已经就绪的任务的能力.从底层来看，Selector提供了询问通道是否已经准备好执行每个I/O操作的能力。Selector 允许单线程处理多个Channel。仅用单个线程来处理多个Channels的好处是，只需要更少的线程来处理通道。事实上，可以只用一个线程处理所有的通道，这样会大量的减少线程之间上下文切换的开销。

在开始之前，需要回顾一下Selec...]]></description><category></category></item><item><title><![CDATA[NIO——(通道)Channel]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81208137</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81208137</guid><author>mlljava1111</author><pubDate>Wed, 25 Jul 2018 18:53:03 +0800</pubDate><description><![CDATA[Channel的分类

广义上来说通道可以被分为两类：File I/O和Stream I/O，也就是文件通道和套接字通道。如果分的更细致一点则是：

FileChannel 从文件读写数据
	SocketChannel 通过TCP读写网络数据
	ServerSocketChannel 可以监听新进来的TCP连接，并对每个链接创建对应的SocketChannel
	DatagramChannel 通...]]></description><category></category></item><item><title><![CDATA[NIO——缓冲区（Buffer）]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81206844</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81206844</guid><author>mlljava1111</author><pubDate>Wed, 25 Jul 2018 17:53:20 +0800</pubDate><description><![CDATA[缓冲区(Buffer)就是在内存中预留指定字节数的存储空间用来对输入/输出(I/O)的数据作临时存储，这部分预留的内存空间就叫做缓冲区；在Java NIO中，缓冲区的作用也是用来临时存储数据，可以理解为是I/O操作中数据的中转站。缓冲区直接为通道(Channel)服务，写入数据到通道或从通道读取数据，这样的操利用缓冲区数据来传递就可以达到对数据高效处理的目的。在NIO中主要有八种缓冲区类(其中Ma...]]></description><category></category></item><item><title><![CDATA[Docker绑定固定IP/跨主机容器互访]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81188300</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81188300</guid><author>mlljava1111</author><pubDate>Tue, 24 Jul 2018 17:03:43 +0800</pubDate><description><![CDATA[ 官网API:https://docs.docker-cn.com/reference/

 

原文地址，转载请注明出处：http://blog.youkuaiyun.com/qq_34021712/article/details/75948566   ©王赛超

前言

之前使用pipework 分配静态ip是暂时的,重启之后就会失效,并且使用pipework绑定的ip 物理机,虚拟机，docker容器的...]]></description><category></category></item><item><title><![CDATA[Kafka生产者事务和幂等]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81180351</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81180351</guid><author>mlljava1111</author><pubDate>Tue, 24 Jul 2018 10:45:46 +0800</pubDate><description><![CDATA[1 生产者幂等性

1.1 引入

幂等性引入目的：

生产者重复生产消息。生产者进行retry会产生重试时，会重复产生消息。有了幂等性之后，在进行retry重试时，只会生成一个消息。
1.2 幂等性实现

1.2.1 PID 和 Sequence Number

为了实现Producer的幂等性，Kafka引入了Producer ID（即PID）和Sequence Number。

PID。每个...]]></description><category></category></item><item><title><![CDATA[记一次耗时毛刺排查]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81170818</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81170818</guid><author>mlljava1111</author><pubDate>Mon, 23 Jul 2018 17:00:23 +0800</pubDate><description><![CDATA[前段时间的某天，注意到一个服务的平均耗时出现了如下图的毛刺现象。

 



耗时毛刺

 

注意到毛刺出现极其规律，每30分钟出现一个毛刺。考虑到这种规律性，并结合服务的流量较小（20 QPS）推测，可能是某个定时请求的接口进行了耗时操作，由于流量较小放大了平均耗时，继而出现了毛刺。但排查主调调用的接口，并没有发现定时的调用，从而否定了这种可能性。
排除服务外部的原因导致的毛刺，那么只剩下服务...]]></description><category></category></item><item><title><![CDATA[jstack性能问题定位案例分析详解]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81170787</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81170787</guid><author>mlljava1111</author><pubDate>Mon, 23 Jul 2018 16:58:54 +0800</pubDate><description><![CDATA[在Java应用的性能测试中，很多性能问题可以通过观察线程堆栈来发现，Jstack是JVM自带dump线程堆栈的工具，很轻量易用，并且执行时不会对性能造成很大的影响。灵活的使用jstack可以发现很多隐秘的性能问题，是定位问题不可多得的好帮手。

1

什么是线程堆栈

线程堆栈也称作线程调用堆栈。Java线程堆栈是虚拟机中线程（包括锁）状态的一个瞬间快照，即系统在某个时刻所有线程的运行状态,包括每...]]></description><category></category></item><item><title><![CDATA[Java8内存模型—永久代(PermGen)和元空间(Metaspace)]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81135052</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81135052</guid><author>mlljava1111</author><pubDate>Fri, 20 Jul 2018 16:45:26 +0800</pubDate><description><![CDATA[一、JVM 内存模型

　　根据 JVM 规范，JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。



　　1、虚拟机栈：每个线程有一个私有的栈，随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西，每个方法会创建一个栈帧，栈帧中存放了局部变量表（基本数据类型和对象引用）、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围，会抛...]]></description><category></category></item><item><title><![CDATA[Eclipse MAT(Memory Analyzer Tool)使用]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81116604</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81116604</guid><author>mlljava1111</author><pubDate>Thu, 19 Jul 2018 15:41:30 +0800</pubDate><description><![CDATA[ MAT(Memory Analyzer Tool)，一个基于Eclipse的内存分析工具，是一个快速、功能丰富的JAVA heap分析工具，它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析，快速的计算出在内存中对象的占用大小，看看是谁阻止了垃圾收集器的回收工作，并可以通过报表直观的查看到可能造成这种结果的对象。

JVM 能够记录下问题发生时系统的部分运行状态，并...]]></description><category></category></item><item><title><![CDATA[JVM参数设置、分析]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81116375</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81116375</guid><author>mlljava1111</author><pubDate>Thu, 19 Jul 2018 15:34:37 +0800</pubDate><description><![CDATA[ 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数，可以极大的减少由于GC工作，而导致的程序运行中断方面的问题，进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程，由于各个程序具备不同的特点，如：web和GUI程序就有很大区别（Web可以适当的停顿，但GUI停顿是客户无法接受的），而且由于跑在各个机器上的配置不...]]></description><category></category></item><item><title><![CDATA[hive分区表增加字段新增字段值为空的bug]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81102664</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81102664</guid><author>mlljava1111</author><pubDate>Wed, 18 Jul 2018 18:00:09 +0800</pubDate><description><![CDATA[网上查了资料，提供了两种解决办法：

1. 修改hive元数据SDS表的CD_ID字段，原因是修改表结构后，元数据库中的SDS中该表对应的CD_ID会改变，但是该表分区下面对应的CD_ID还是原来表的CD_ID

2.删除当前分区重建

这两个办法都不太适应，办法1修改元数据库风险大，办法2可能会导致数据丢失。

老大给的任务是其他办法workaround。

通过测试发现如下规律，先给出结论：
...]]></description><category></category></item><item><title><![CDATA[宝藏智能硬件DIY网站：OneEase]]></title><link>https://blog.youkuaiyun.com/mlljava1111/article/details/81102387</link><guid>https://blog.youkuaiyun.com/mlljava1111/article/details/81102387</guid><author>mlljava1111</author><pubDate>Wed, 18 Jul 2018 17:48:44 +0800</pubDate><description><![CDATA[OneEase网站为技术人员提供了丰富的资源和实际项目，帮助我们在实践中提升技能。无论你是刚开始接触智能硬件，还是希望在已有的基础上进一步提升，OneEase的项目都能满足你的需求。通过这些项目，我们不仅能学到新的技术，还能亲手实现自己的创意，这对我们技术人员来说是非常宝贵的体验。]]></description><category></category></item></channel></rss>