程序员的自我修养

Hive row_number()使用方法

0条评论7,732次浏览

需求

根据短信月详单实现Top 10短信联系人的功能。就是计算出每个号码发送短信最多的10个号码(由于电信业务规则,接收到的短信不会产生记录,所以只能计算发送短信最多的10个号码)。

数据全部通过datax从oracle导入到hdfs上,然后通过hive外部表的形式进行管理。

第一步

初步一看貌似用原生MapReduce比较好解决,毕竟以前用MR处理过类似的需求。但是最近刚刚建议老总将能转移到hive上用sql实现的业务全部转移过来,于是想想还是尝试用sql实现吧。

首先先试试根据发送短信号码、接收短信号码group来计算每个号码对的短信次数。

(更多…)

分类:Apache Hive
标签:

SSH隧道

1条评论2,743次浏览

最近跟同事学了一招SSH隧道,感觉十分牛掰。在此记录。

适用场景

生产环境中的集群往往在一个局域网中,而该局域网只能通过某台特定的堡垒机来访问。这样的网络环境下可以通过SSH隧道将一些端口隐射出来,比如CM的7180和HUE的8888端口,这样就可以在本机上通过浏览器来访问CM和HUE了。

命令示例与解释

上述命令意思是通过接口机(ssh端口为8282)将master-ip机器的7180端口隐射到本机的7180端口,这样可以通过访问http://localhost:7180来访问master-ip机器的7180端口。

参数详解

  • -C Enable compression. 压缩数据传输。
  • -f Fork into background after authentication. 后台认证用户/密码,通常和-N连用,不用登录到远程主机。
  • -N Do not execute a shell or command. 不执行脚本或命令,通常与-f连用。
  • -g Allow remote hosts to connect to forwarded ports. 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
  • -L port:host:hostport. 将本地机(客户机)的某个端口转发到远端指定机器的指定端口。
  • -p port. 指定跳转机器的ssh端口号。

其它

可通过ps -ef|grep ssh 来查看ssh隧道的的进程号,kill掉即可关闭该隧道。

隧道若长期闲置也会出现超时,此时kill掉再重新连接吧。

分类:杂七杂八
标签:

CDH安装中的一些问题及解决方法

2条评论9,238次浏览

Yarn服务无法启动1

有一次同事拿着我写的安装手册去安装CDH,结果在启动Yarn服务这一步一直失败,而且没有log文件生成,也就是根本就不知道是什么错误。

经过百般尝试后依然无果。于是问同事是不是严格按照我的文档上来的,同事说是。结果又尝试和排查了很多次后,同事突然说,我想起来了,打通ssh没按照你的来,你是生成key了分发到其它机器,其实有种口令直接就能分发key到其它机器,不用在本机生成。比如这样ssh-copy-id -p 8282 -i ~/.ssh/id_rsa.pub user@ip

然后,我怀着崩溃的心情告诉了他,哥哥,master机器也要能免密码登录自己啊!!

最后,做好master机器免登录自己后即可成功安装。

Yarn服务无法启动2

报错信息:

这个错误是CM的一个bug,解决方法为修改/opt/cm-5.3.0/lib64/cmf/agent/src/cmf/util.py文件。将其中的代码:

修改为:

然后重启所有Agent即可。

HDFS服务无法启动

若HDFS服务无法启动,通常是第二次尝试安装中才会遇到,这是只要将上次安装时设置的Namenode和DataNode文件夹下的数据全部删除即可。

Host Monitor和Service Monitor服务无法启动

这个错误的报错信息如下:
(更多…)

分类:CDH
标签:

Sqoop2初步使用感受

8条评论8,628次浏览

最近将公司各个运营点的集群逐步转移入CDH。第一个遇到的问题就是Sqoop2的使用问题。

具体说来,分为下面几个方面。

Date类型字段的parse错误

测试sqoop2的时候就简单的测了下varchar和number类型的数据,发现没问题后就写了报告。现在我知道错了。

实际使用过程中,发现遇到表中有Date类型的column时,所有的job都会报以下错误:

2015-01-28 16:22:29,964 INFO [IPC Server handler 0 on 55187] org.apache.hadoop.mapred.TaskAttemptListenerImpl: JVM with ID : jvm_1422410148386_0003_m_000002 asked for a task
2015-01-28 16:22:29,966 INFO [IPC Server handler 0 on 55187] org.apache.hadoop.mapred.TaskAttemptListenerImpl: JVM with ID: jvm_1422410148386_0003_m_000002 given task: attempt_1422410148386_0003_m_000000_0
2015-01-28 16:22:35,516 FATAL [IPC Server handler 2 on 55187] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1422410148386_0003_m_000000_0 - exited : org.joda.time.LocalDateTime.parse(Ljava/lang/String;)Lorg/joda/time/LocalDateTime;
2015-01-28 16:22:35,517 INFO [IPC Server handler 2 on 55187] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Diagnostics report from attempt_1422410148386_0003_m_000000_0: Error: org.joda.time.LocalDateTime.parse(Ljava/lang/String;)Lorg/joda/time/LocalDateTime;
2015-01-28 16:22:35,524 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: Diagnostics report from attempt_1422410148386_0003_m_000000_0: Error: org.joda.time.LocalDateTime.parse(Ljava/lang/String;)Lorg/joda/time/LocalDateTime;
2015-01-28 16:22:35,542 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: attempt_1422410148386_0003_m_000000_0 TaskAttempt Transitioned from RUNNING to FAIL_CONTAINER_CLEANUP

(更多…)

分类:Apache Sqoop2
标签:,

战5渣系列——还是String的split方法

3条评论5,688次浏览

发现最近弱爆了,说多了都是泪,不想说了,因为我是战5渣。

背景简介

今天写MR程序发现一直报数组越界的错误。这么简单的异常还不是分分钟解决?结果,恩,改了10次以后,发现还是不对。具体出错的代码已经可以确定,如下:

原因排查

显然单纯的看代码是没有问题的,结合具体的数据才可能出错,比如分隔后的数组长度不到4——这是我的第一反应。更准确的说,是我编码的时候就想到了,所以采用了value.toString().split("\t",4)这个方法。根据我的第一篇博文中记录的经验,String的split方法会将数组后面为空的字符串截取掉,需要采用split(String regex, int limit)方法才能正确的获取到想要的长度。

所以若是经验正确无误,那怎么也不会报数组越界的错误吧,顶多会在parseLong的地方报无法转换的错。但事实就是一直报数据越界的错误,改了10次其它地方都无果。
(更多…)

分类:Java语言, 战5渣
标签:,

CDH离线安装手册

7条评论12,073次浏览

公司终于有升级Hadoop版本的意思了,于是强烈推荐CDH版本,终于在再三的推荐下初步确定使用CDH版本了。于是CDH的测试集群搭建开始了。撒花...

  • CDH版本:5.3.0
  • 操作系统版本:CentOS 6.3
  • JDK版本:jdk-7u71-linux-x64
  • 资源下载:

系统环境搭建

  • 打通SSH
  • 配置Hosts
  • 关闭IPv6
  • 关闭SELINUX
  • 关闭防火墙
  • 打开句柄限制
  • 安装JDK
  • NTP

以上步骤参考Hadoop集群搭建全过程。其中JDK安装可能需要卸载操作系统自带的OpenJDK,命令:

(更多…)

分类:CDH
标签:,

战5渣系列——奇怪的Pig特性

8条评论12,438次浏览

最近连续2次发烧+工作比较忙导致好久没更新。今天更一发战5渣。

先感受下战5渣的境界:
only5

背景简介

用存储过程分分钟能搞定的事情,老总非要用hadoop跑,曰:hadoop是我们的核心竞争力。用hadoop的话算上导数据的时间,估计用时怎么也要6个小时左右。但这不是重点。重点是用pig计算出来的结果和存储过程跑出来的不一致,于是苦逼的排错之旅开始了。

第一个bug

第一个bug叫做“人祸”。队友发来的数据库表的文档居然漏掉了一个字段,于是这个字段后面的列全部对应错了。而我用pig又喜欢用X = FOREACH B1 GENERATE $4,$5,$16,$21,$45,$77,$81,$92,$47;这样的风格,并且加上如下注释:

好了不开玩笑了。虽然这个问题很没有技术含量,但教会了我这么一个真理:永远不要相信其它人,若确实需要相信其它人请选择性的相信那些靠谱的人!

第二个bug

第一个bug完全体现不出我是战5渣这么一个事实,那么第二个bug就能很好的诠释什么叫战5渣。

(更多…)

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

LeetCode编程练习(2)

7条评论10,058次浏览

Max Points on a Line

题目

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

答案

思路:时间复杂度O(n^3)的情况下是肯定可以算出结果的,那么意味着通过空间换时间应该是可以让时间复杂度达到O(n^2),这是我自己发明的定律。首先定义静态内部类Line,用于表示两点计算出来的直线,考虑到Double类型的精度损失问题,Line采用三个属性来保证精度上的完整性。然后重写hashCode()equals(..)方法,使得同一条直线相等,且在Hash值上相等。如此通过2个 \(n(n-1)\over 2\) 次循环即可获取到结果,时间复杂度为O(n^2)。
(更多…)

分类:Java语言
标签:,

LeetCode编程练习(1)

1条评论10,851次浏览

看到Leetcode 编程训练这篇文章,于是也开始尝试扫题。上面的题目基本是毫无实际用处的,但是训练下编程还是可以的。做题过程中感受到了一些平常没有的感觉(不要问我是不是查克拉流动的感觉,我还没具体的感受到),反正感觉应该对自己挺有用的。不过,也出现了很多让人想吐槽的bug(或者是我太弱了,还无法理解原因)。

Min Stack

题目

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.
  • getMin() -- Retrieve the minimum element in the stack.

答案V1

采用一个TreeMap来保证随时可以获取到最小值(好处是最大值也能获取到,虽然题目中没有这个要求),提交答案后得到结果:Memory Limit Exceeded
(更多…)

分类:Java语言
标签:,

一些有用的CSS3属性

2条评论2,145次浏览

最近点错了技能点,点到css3上去了。然后终于算是比较系统化的完成了一套样式的设计。没错就是现在博客用到的样式,除了惯性式的背景流动效果外,其它的绝大部分都是我自己通过撞大运式编程弄出来的。

这套样式翻来覆去的就用到了几种css3属性,感觉十分有用,在此记录下来。

transition

transition,动画效果(反正我是这么理解的)属性。例如博客现在样式中的:

  • 超链接的颜色,蓝色变成金黄色
  • 按钮的颜色
  • 文章的边框阴影
  • sidebar中的效果,向右移动,背景变化

使用方法

超链接颜色变化+字体大小变化

(更多…)

分类:前端
标签:
profile
  • 文章总数:81篇
  • 评论总数:247条
  • 分类总数:32个
  • 标签总数:45个
  • 运行时间:1250天

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

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

最新评论
  • Anonymous: :?: :razz: :sad:
  • Anonymous: 牛
  • Anonymous: 楼主你好,我偶尔也会 遇到Reconnect due to socket error: java.nio.channels.ClosedCha...
  • Anonymous: sdfs
  • Anonymous: :arrow: :neutral: :cry:
  • Anonymous: java.io.NotSerializableExcepti on: DStream checkpointing has been enabled but the DStreams with their...
  • wick: HI,请问一下,U,S,V得到 ,怎么得到近似矩阵 (用spark 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: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮 忙发给我吗