Category Archives: Hadoop&HIVE - Page 2

关于Apache Hadoop 1.0

本文译自cloudera公司Charles Zedlewski写的一篇文章《An update on Apache Hadoop 1.0》

关于最新发布的Apache Hadoop V1.0,一些用户或客户会问:这个版本的功能有哪些?基于哪个版本?后续的版本是什么?要解释这一点,我们应该从Apache项目发布的一些基本知识开始:
一般来说,Apache项目的新功能在主干代码上开发(也就是“trunk”)。有时候,很大的特性也会有自己的开发分支(也就是“branch”),他们期望后续会并入trunk。新功能通常是在trunk发布之前就有了,一般质量或稳定性没有太大保证。候选的分支会定期从主干分支上分离出来发布。一旦一个候选分支发布,它通常停止获得新的功能。如果有BUG修复,经过投票后,会针对这个特定的分支再发布一个新版本。社区的任何成员可以创建一个版本分支,并可随意命名。

a brief history of Apache Hadoop branches & releases

a brief history of Apache Hadoop branches & releases

此图说明了各个Apache Hadoop版本和他们的起源历史。有3次,其中来自Apache Hadoop项目的社区版本打破了release和branch的传统规范。这些通常是造成用户困扰的根源。

  1. Apache Hadoop的0.20版本分支一年多后,重要功能仍然在该分支上继续开发,而不是在主干上。0.20.2分支上增加了两大主要特性:一是验证,增强了 hadoop核心的安全性;另外一个是append,使用户运行的Apache HBase无数据丢失的风险。security分支后来被发布为0.20.203。这些分支和其后续版本已经成为用户困扰的最大来源,因为自那之 后,0.20的分支版本有的功能主干版本却没有,反之亦然。
  2. 在时间上,Apache Hadoop 0.22是在Apache Hadoop 0.23之后发布的。实际上,Apache Hadoop 0.23是0.22版本的严格超集,但它却在0.22版本一个月前发布。
  3. 0.23版本发布几周后,0.20的一个分支(也就是0.20.205)重命名为1.0版本。但0.20.205和1.0之间没有功能上的差异,这仅仅是重新编号。

因为第1点,曾经有18个月之长的期间,没有一个Apache版本有Apache Hadoop所有承诺的功能特性。下表说明了这一点:

hadoop release table

hadoop release table


Data Warehouse For Ever原创文章,转载请注明出处

关于 Warning: $HADOOP_HOME is deprecated.

hadoop 1.0.0版本,安装完之后敲入hadoop命令时,老是提示这个警告:

Warning: $HADOOP_HOME is deprecated.

经查hadoop-1.0.0/bin/hadoop脚本和hadoop-config.sh脚本,发现脚本中对HADOOP_HOME的环境变量设置做了判断,笔者的环境根本不需要设置HADOOP_HOME环境变量。
参考文章:
HADOOP-7398
解决方案一:到HOME目录编辑.bash_profile文件,去掉HADOOP_HOME的变量设定,重新输入hadoop fs命令,警告消失。
解决方案二:到HOME目录编辑.bash_profile文件,添加一个环境变量,之后警告消失:

export HADOOP_HOME_WARN_SUPPRESS=1


Data Warehouse For Ever原创文章,转载请注明出处

zookeeper 3.3.4中的zkServer.sh

近日在Red Hat Linux上安装zookeeper 3.3.4版本,发现zkServer.sh脚本中关于status的写法有点问题,总是提示服务未运行。查看代码,发现脚本中使用了 -q 参数,但这个参数在笔者的nc命令中,不支持。

status)
# -q is necessary on some versions of linux where nc returns too quickly, and no stat result is output
STAT=`echo stat | nc -q 1 localhost $(grep “^[[:space:]]*clientPort” “$ZOOCFG” | sed -e ‘s/.*=//’) 2> /dev/null| grep Mode`
if [ "x$STAT" = "x" ]
then
echo “Error contacting service. It is probably not running.”
exit 1
else
echo $STAT
exit 0
fi
;;

去掉-q参数,同时去掉最后的“grep Mode”,使输出结果信息更丰富:

STAT=`echo stat | nc localhost $(grep “^[[:space:]]*clientPort” “$ZOOCFG” | sed -e ‘s/.*=//’) 2> /dev/null`

在笔者的4节点zookeeper集群中,运行结果如下:

[admin@vm-dw-141-70 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /home/admin/zookeeper-3.3.4/bin/../conf/zoo.cfg
Zookeeper version: 3.3.3-1203054, built on 11/17/2011 05:47 GMT Clients: /127.0.0.1:57549[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/3/16 Received: 11 Sent: 10 Outstanding: 0 Zxid: 0×100000008 Mode: leader Node count: 4


Data Warehouse For Ever原创文章,转载请注明出处