<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[stuliper的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/stuliper</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; stuliper]]></copyright><item><title><![CDATA[python-kafka pykafka]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/82499255</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/82499255</guid><author>stuliper</author><pubDate>Tue, 13 Jul 2021 17:23:03 +0800</pubDate><description><![CDATA[kafka-python


from kafka import KafkaConsumer,TopicPartition,OffsetAndMetadata
consumer = KafkaConsumer("wd-prd-data-test",
                         group_id="wd_prd_info_group",
                    ...]]></description><category></category></item><item><title><![CDATA[kafka leader 选举]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/82387414</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/82387414</guid><author>stuliper</author><pubDate>Tue, 19 Mar 2019 14:12:29 +0800</pubDate><description><![CDATA[Controller leader

在Kafka早期版本，对于分区和副本的状态的管理依赖于zookeeper的Watcher和队列：每一个broker都会在zookeeper注册Watcher，所以zookeeper就会出现大量的Watcher, 如果宕机的broker上的partition很多比较多，会造成多个Watcher触发，造成集群内大规模调整；每一个replica都要去再次zookee...]]></description><category></category></item><item><title><![CDATA[基于kafka-0.8.2.2 数据安全处理]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/82706161</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/82706161</guid><author>stuliper</author><pubDate>Fri, 14 Sep 2018 17:19:38 +0800</pubDate><description><![CDATA[当前使用的kafka-0.8.2.2 没有安全管理模块
kafka-manager没有安全管理模块，通过nginx反向代理、用户认证来实现安全管理
做相应的网络安全限制，对外桌面服务可以直接访问nginx服务器，而无法访问部署kafka-mannager的主机（限制端口）

方式1：基于kafka-0.8.2.2 开发管理模块
对SSL，kerberos，zookeeper分布式鉴权方方式做了些了...]]></description><category></category></item><item><title><![CDATA[windows idea pyspark   python运行spark程序]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/82453625</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/82453625</guid><author>stuliper</author><pubDate>Thu, 06 Sep 2018 09:15:41 +0800</pubDate><description><![CDATA[1，安装python3
      安装python3，添加到系统环境变量path中：D:\Python37；D:\Python37\Scripts    
      安装pip组件
      pip install py4j

2，安装intellJ idea
     安装好intellJ idea
     安装python插件，配置python 

3，下载hadoop安装包
    ...]]></description><category></category></item><item><title><![CDATA[直接插入排序]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/82229343</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/82229343</guid><author>stuliper</author><pubDate>Thu, 30 Aug 2018 23:49:23 +0800</pubDate><description><![CDATA[原理：从待排序的n个记录中的第二个记录开始，依次与前面的记录比较并寻找插入的位置，每次外循环结束后，将当前的数插入到合适的位置。

稳定性：稳定排序。

时间复杂度： O(n)至O（n2），平均时间复杂度是O（n2）。

最好情况：当待排序记录已经有序，这时需要比较的次数是Cmin=n−1=O(n)。

最坏情况：如果待排序记录为逆序，则最多的比较次数为Cmax=∑i=1n−1(i)=n(n−1)...]]></description><category></category></item><item><title><![CDATA[kafka  offset 机制]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/82216020</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/82216020</guid><author>stuliper</author><pubDate>Thu, 30 Aug 2018 09:24:32 +0800</pubDate><description><![CDATA[kafka消息处理类：MessageAndOffset


case class MessageAndOffset(message: Message, offset: Long) {
    /**
   * Compute the offset of the next message in the log
   */
  def nextOffset: Long = offset + 1
}

...]]></description><category></category></item><item><title><![CDATA[冒泡排序]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/82147604</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/82147604</guid><author>stuliper</author><pubDate>Tue, 28 Aug 2018 14:40:36 +0800</pubDate><description><![CDATA[冒泡排序总的平均时间复杂度为 

 

冒泡排序算法的原理如下：


	比较相邻的元素。如果第一个比第二个大，就交换他们两个。

	对每一对相邻元素做同样的工作，从开始第一对到结尾的最后一对。在这一点，最后的元素应该会是最大的数。
	
	
	针对所有的元素重复以上的步骤，除了最后一个。
	
	
	持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
	

自己理解：相邻比较，对数...]]></description><category></category></item><item><title><![CDATA[快速排序]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/82147536</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/82147536</guid><author>stuliper</author><pubDate>Tue, 28 Aug 2018 14:37:39 +0800</pubDate><description><![CDATA[通过一趟排序将要排序的数据分割成独立的两部分，其中一部分的所有数据都比另外一部分的所有数据都要小，然后再按此方法对这两部分数据分别进行快速排序，整个排序过程可以递归进行，以此达到整个数据变成有序序列。

 

设要排序的数组是A[0]……A[N-1]，首先任意选取一个数据（通常选用数组的第一个数）作为关键数据，然后将所有比它小的数都放到它前面，所有比它大的数都放到它后面，这个过程称为一趟快速排序。...]]></description><category></category></item><item><title><![CDATA[linux常用命令]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/82146702</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/82146702</guid><author>stuliper</author><pubDate>Tue, 28 Aug 2018 13:59:26 +0800</pubDate><description><![CDATA[变量赋值，要紧凑，不要有空格

``命令模式，无法换行

1,暴力赋权（a：所有用户，w：写，x：执行,-R:递归所有)

chmod a+wx -R  foldername

2,查看文件系统格式

 df  -T -h

file -s /dev/vda1

cat /etc/fstab

3，查看文件夹大小 du 查看目录占用空间大小

 du -h --max-depth=1 

du -...]]></description><category></category></item><item><title><![CDATA[spark 启动流程 源码解析]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/81219286</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/81219286</guid><author>stuliper</author><pubDate>Tue, 21 Aug 2018 17:01:03 +0800</pubDate><description><![CDATA[简单例子


object sum {
  def main(args: Array[String]): Unit = {
    val conf =new SparkConf().setAppName(&quot;SUM&quot;);
    conf.setMaster(&quot;local[3]&quot;)
    val size=1024*1024*1024;
    val sc=new SparkContext(c...]]></description><category></category></item><item><title><![CDATA[spark RDD]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/81538634</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/81538634</guid><author>stuliper</author><pubDate>Thu, 09 Aug 2018 16:09:47 +0800</pubDate><description><![CDATA[每个RDD都有其对应的依赖，依次索引，就可以追踪到起始RDD（其依赖为空）

当前RDD的逻辑处理都是对其父RDD的操作,当前RDD数据是对其父RDD数据做compute(~)获得的，这种操作实现了RDD的惰性加载

 

spark RRD 依赖关系：

窄依赖：每个父RRD的分区至多被一个子RDD的分区使用，协同划分，分区一一对应。

宽依赖：多个子RDD的分区依赖一个父RDD的分区。多对多的...]]></description><category></category></item><item><title><![CDATA[spark stage]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/81538290</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/81538290</guid><author>stuliper</author><pubDate>Thu, 09 Aug 2018 15:54:46 +0800</pubDate><description><![CDATA[spark RRD 依赖关系：

窄依赖：每个父RRD的分区至多被一个子RDD的分区使用，协同划分，分区一一对应。

宽依赖（ShuffleDependecy）：多个子RDD的分区依赖一个父RDD的分区。宽依赖需要所有的父RDD分区数据可用。宽依赖会重新分区。

              宽依赖操作会有一个可选参数（手动设置分区数）。

              宽依赖对应的RDD实现是Shu...]]></description><category></category></item><item><title><![CDATA[SequenceFile读文件源码解析]]></title><link>https://blog.youkuaiyun.com/stuliper/article/details/81116679</link><guid>https://blog.youkuaiyun.com/stuliper/article/details/81116679</guid><author>stuliper</author><pubDate>Thu, 19 Jul 2018 15:44:42 +0800</pubDate><description><![CDATA[读取文件数据



FileSystem实例化





#实例化FileSystem对象（DistributedFileSystem实例）







#DFSClient构造方法，关键代码块









SequenceFile.Reader 实例化



Reader构造方法源码(部分)









#通过抽象类FileSystemLinkResolver.resolve方法获...]]></description><category></category></item></channel></rss>