程序员的自我修养

leetcode shell

2条评论773次浏览

不知不觉中对各种shell命令熟练了起来,居然完成了所有的leetcode shell题目。撒花!谁在那嘀咕全部shell题目就4题的,你站出来!

Tenth Line

awk

sed

Word Frequency

awk

Transpose File

awk

Valid Phone Numbers

分类:Linux, Shell
标签:, ,

mapreduce二次排序

0条评论954次浏览

之前离职的哥们的mr任务留了一堆的坑,他把value当成排序过的,于是reduce里面全部是如此统计dau、设备数的:

心好累,手动微笑。

正所谓前人挖坑后人填,我不入地狱谁入地狱。于是开始一个个mr的改代码。

方法一:用set统计

用set的好处就是改动极小,但存在oom的风险。实际跑了下线上的数据,果然oom了。摔!

方法二:bloom filter

好处是改动也不大,也不会oom,但就统计的结果可能会比实际的值要小。考虑到数据量也没有大到要用bloom filter的地步,且希望数据尽量的精准,放弃!

方法三:mr二次排序

(更多…)

标签:,

scala笔记

2条评论1,410次浏览

apply

先上代码,builder模式:

scala初学者第一反大概object对象怎么能有构造参数,就算可以带参数那也应该在并发上有问题吧。

实际上是apply这个语法糖的作用:

至于这么写有什么好处?其实我觉得没啥好处,除了看起来特别舒服。但代码就是写给人看的不是么,给机器看的那是0和1。掀桌!!

模式匹配

就不背书了,模式匹配相当强大,特别对于多个条件联合判断的时候,比如条件a/b/c,组合起来多达8种可能。若用if else写到最后肯定晕,这时候用模式匹配感觉代码会清晰很多。

(更多…)

分类:Scala语言
标签:

APNS HTTP/2 client端遇到的坑

8条评论4,283次浏览

MAX_CONCURRENT_STREAMS

这个坑排查时间最长。苹果官方文档上没有关于settings的说明,但测试和生产环境中服务器返回的settings是settings={HEADER_TABLE_SIZE=4096, MAX_CONCURRENT_STREAMS=500, MAX_FRAME_SIZE=16384, MAX_HEADER_LIST_SIZE=8000}。而MAX_CONCURRENT_STREAMS=500的意思就是一个channel(就netty而言)最多同时并发500个stream。

若本地不限制stream的并发数,则会报错:Stream does not exist: $streamId。解决方法很简单,自己实现一个Channel进行计数即可。当服务器返回结果时调用decr()。

(更多…)

分类:APNs, Scala语言
标签:,

战5渣系列——Kafka Leader None

9条评论15,068次浏览

前几天大概是脑子短路了,在zookeeper的client里面本想执行ls /kafka的,结果不小心执行成了rmr /kafka

当时我的反应是这样的:1058005442427

然后迅速查了下所有的线上服务,发现居然没有受到影响。然后我的反应是这样的:1444572330_500x500.png
(更多…)

分类:Apache Kafka, 战5渣
标签:, ,

UNIX Pipeline

0条评论1,476次浏览

自从开始用UNIX Pipeline后,感觉查日志速度快了一倍不止。什么是UNIX Pipeline我就不背书了,这里就记录下一些好用的命令吧。

日志示例:

INF [20160215-15:40:52.608] regservice: /alias => {"alias":"13587428", "header":{"name":"XXXX","appkey":"1234567890"}, "token":"abc1234567890"} 1.1.0.0
INF [20160215-15:40:52.608] regservice: /launch => {"header":{"name":"XXXX1","appkey":"1234567891"}, "token":"abc1234567891"} 1.2.0.0
...

grep

not,查找不包含字符串的记录

and,查找满足多个条件的记录

or,查找满足任意一个条件的记录

-oP,这个我也不知道如何描述,我的一个常用场景是:根据日志,统计每个appkey下的日志有多少。于是可用下面的记录先选出appkey(appkey长度固定为10位),以供后续处理:

上文中日志示例的结果为:

(更多…)

分类:Linux
标签:,

常用网址记录

0条评论1,714次浏览

懒得每次要用的时候百度,纪录下。持续更新。
sed 简明教程
AWK 简明教程
RESTful API 设计指南
Redis 命令参考
在线时间戳转换工具

分类:未分类
标签:

3个python库

2条评论5,528次浏览

最近没什么可写的。换工作后开发语言由Java+Shell变成了Scala+Python。

最初的不适期过后,觉得scala和python异常好用。作为一个python新手,纪录下最近常用的3个库。

redis

大部分方法和redis客户端的方法名一样。文档:https://pypi.python.org/pypi/redis

happybase

python与hbase交互的库,其原理就是对thrift接口的一层封装。文档:http://happybase.readthedocs.org/en/latest/index.html

官方文档有的地方不太详细,可以参考hbase thrift文档。

初步测试貌似对hbase:meta表的row_prefix以及start_row、end_row属性无法支持,也就是对hbase:meta表只能全表扫描。应该是个bug。
(更多…)

分类:Python语言

KafkaUtils.createDirectStream

9条评论16,490次浏览

官网上对这个新接口的介绍很多,大致就是不与zookeeper交互,直接去kafka中读取数据,自己维护offset,于是速度比KafkaUtils.createStream要快上很多。但有利就有弊:无法进行offset的监控。

项目中需要尝试使用这个接口,同时还要进行offset的监控,于是只能按照官网所说的,自己将offset写入zookeeper。

方法1

这个方法只有3个参数,使用起来最为方便,但是每次启动的时候默认从Latest offset开始读取,或者设置参数auto.offset.reset="smallest"后将会从Earliest offset开始读取。

显然这2种读取位置都不适合生产环境。
(更多…)

标签:, ,

Spark集群问题小结

1条评论2,626次浏览

JAVA版本问题

master进程以jdk7运行,worker以jdk6运行。

产生原因

集群中的机器曾由jdk6升级至jdk7,升级后未卸载jdk6。由未知原因(初步推测ssh配置的问题),导致ssh host "java -version"命令结果显示为jdk6,但ssh至host后再运行java -version命令则显示jdk7。而spark运行worker是通过ssh来启动的,所以导致worker全部以jdk6启动。

解决方法

在spark执行用户下的.bashrc中加入$JAVA_HOME, $PATH等环境变量,然后重启集群。

pid文件问题

运行$SPARK_HOME/sbin/下的各种stop开头的sh文件都会显示类似下方错误:

(更多…)

分类:Apache Spark
标签:
profile
  • 文章总数:79篇
  • 评论总数:254条
  • 分类总数:31个
  • 标签总数:44个
  • 运行时间:1193天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论
  • Anonymous: :arrow: :neutral: :cry:
  • Anonymous: java.io.NotSerializableExcepti on: DStream checkpointing has been enabled but the DStreams with their...
  • wick: HI,请问一下,U,S,V得到后,怎么得到近似矩阵呢(用sp ark java),谢谢。
  • Michael Whitaker: Thank you for this blog, it was very helpful in troubleshooting my own issues. It seems that no...
  • Anonymous: :mad:
  • Anonymous: :???:
  • Anonymous: :mad: :mad: :mad:
  • 洋流: 哥们,我问个问题,你把testOnborrow去掉了。。如果 得到的jedis资源是个不可用的,服务从来都不出问题么?
  • 洋流: 哥们,我问个问题,你把testOnborrow去掉了。。如果 得到的jedis资源是个不可用的,服务从来都不出问题么?
  • Anonymous: :razz: :evil: :grin:
  • 张瑞昌: 有很多,比较常见的是Jacob迭代法,一次迭代O(n^3), 迭代次数不清楚。 如果是手动算的话按照定义求就可以了
  • Anonymous: :mrgreen:
  • lc277: 你好 我想问下一般删除节点要多久,要删除的datanode大概用了 1t,解除授权已经30多小时还没完成,请问是出现什么问题了吗 麻烦告诉下谢谢 qq1844554123
  • Anonymous: 你好 我想问下一般删除节点要多久,要删除的datanode大概用了 1t,解除授权已经30多小时还没完成,请问是出现什么问题了吗
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮忙发给我吗
  • Anonymous: 请问一下,那个 user的推荐结果楼主查看了么? 为什么输入数据 最高是五分,输出结果都是7分8分啥的?怎么设置输出的分数的最 大值?
  • Anonymous: 那个 user的推荐结果楼主查看了么? 为什么输入数据 最高是五分,输出结果都是7分8分啥的?
  • Anonymous: stopGracefullyOnShutdown在yarn- client模式下我测试的无效,你的呢
  • Anonymous: 另外,import的lib包能否发个列表.