OSTeching
  • About

Hadoop启动陷阱

By Julian Zhu On February 3, 2012 · Leave a Comment

最近在CentOS 6.2 上搭建了Hadoop-1.0.0 测试环境,遇到了很多地雷。这里记录下Hadoop 环境搭建的陷阱,以后少走完路,陆续补充中:

0/ ssh 无密码登录
注意authoried_keys 权限是 0600,否则一直提示输入密码

1/  修改主机名,不要用localhost
注意同时修改 /etc/hosts 和 /etc/sysconfig/network,否则不能远程启动data node

2/ 注意把所有节点都加入到/etc/hosts
否则ssh 会报警,不能启动
提示信息是 reverse mapping checking getaddrinfo for xxx [192.168.1.133] failed – POSSIBLE BREAK-IN ATTEMPT!

3/ hdfs 工作目录 name 和data 的权限要是755

4/ 关闭部署机的防火墙
否则mapred 不能启动,任务不能提交

5/ 注意直执行./hadoop namenode -format 一次
[...]

Continue Reading →

SLF4J MDC and Marker

By Julian Zhu On December 18, 2011 · 2 Comments

日志和业务联系在一块的时侯怎么办? 比如,记下登录用户ID,串起前后日志;不同的业务模块记录在不同的日志文件里。SLF4J 解决这两件事很容易。

记录上下文相关信息可以用MDC,MDC 的用法非常简单。首先在logback.xml 里面用%X{your_key} 标记需要记录上下文信息。然后在代码中用MDC 记录your_key 的值。举例:

T.java: MDC.put("your_key", "your_value"); logger.info("Hello World"); logback.xml <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss} %X{your_key} %msg%n</pattern> </layout> output: 2012-12-17 23:20:45 your_value Hello World

区分不同的模块的日志,可以在getLogger() 的时侯根据logger 的名字拿到不同的logger-> appender 。不过这条路略微有点土。用SLF4J 的marker 可以相对优雅的解决这个问题。可惜,目前只有logback 才支持。

如果把所有的日志混在一起记录,只是用关键字做区分,很简单,之需要在代码中声明marker,然后在logback 中配置就可以了。举例:

T.java: MDC.put("your_key", "your_value"); logger.info("Hello World"); logback.xml <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss} %X{your_key} %msg%n</pattern> </layout> output: 2012-12-17 23:20:45 your_value [...]

Continue Reading →

Lite-Mongo a very thin wrapper of MongoDB Java Driver

By Julian Zhu On August 15, 2011 · Leave a Comment

Lite-Mongo 简单的MongoDB Java Driver 封装最近在折腾Mongo,觉得官方的Java API 挺悲催的,就跟直接用JDBC 玩RDBMS 一样。于是动手折腾了一个简单的 Lite-Mongo ,主要就在MongoDB的Java Driver 上薄薄的封装一层,简化MongoDB 的使用。Lite-Mongo 的思路是这样的,Scanner – Factory – Dao(Param) – Entity – Field 。告诉Scanner 扫描Dao,然后从Factory 拿到Dao 实例,Dao 和 Entity 关联,在Entity 中指定各个Field 对用MongoDB 的Collection中Document 的Field。最主要的就是不用自己实现Dao,只需要定义好interface。Lite-Mongo 通过反射,在运行时组织与MongoDB 交互的行为。

目前典型的用法可以参考源代码中的DaoTest.java 。主要是以下三个步骤:

DaoScanner.scan(PersonDao.class); PersonDao dao = DaoFactory.get(PersonDao.class); Person p = dao.get(“ttttt”, 111);

Lite-Mongo 提供了几个基础的Annotation,用来构建应用的数据访问层(Dao)。首先是@Entity 用来标记实体,并与MongoDB中的Collection 关联。@Field 标识实体中的属性,Document 中的字段。@Dao 标识数据访问接口,并关联到实体。 [...]

Continue Reading →
← Previous Entries
  • Recent Posts

    • Hadoop启动陷阱
    • SLF4J MDC and Marker
    • Lite-Mongo a very thin wrapper of MongoDB Java Driver
    • What is the better mobile phone contacts
    • 移动互联网时代手机能干什么
    • Small talk about SOA
    • Scala flexible syntax: bad or good
    • Tricks to extend your own Tuscany Binding
    • 中小企业如何开展SOA
    • 闻名不如见面-南山坡专题技术讨论活动
  • Recent Comments

    • Ken on SLF4J MDC and Marker
    • Ken on SLF4J MDC and Marker
  • Categories

    • ESB
    • Essays
    • Hadoop
    • JEE
    • Mobile Internet
    • NoSQL
    • OSGi
    • SCA
    • Scala
    • Scrum
    • SOA
  • Archives

    • February 2012 (1)
    • December 2011 (1)
    • August 2011 (1)
    • April 2011 (1)
    • March 2011 (1)
    • January 2011 (14)
  • Links

    • Jackyrong
    • Rosen
    • 牛开B
    • 颠覆软件
    • 龙居
"最近twitter 上大家都不怎么活跃啊,发生了什么吗?" — julian0zzx

OSTeching

Pages

  • About

The Latest

  • Hadoop启动陷阱
    最近在CentOS 6.2 上搭建了Hadoop-1.0.0 测试环境,遇到了很多地雷。这里记录下Hadoop 环境搭建的陷阱,以后少走完路,陆续补充中: 0/ ssh 无密码登录 注意authoried_keys 权限是 0600,否则一直提示输入密码 1/ […]

More

Creative Commons License
© 2006~2012 OSTeching
Platform by PageLines