设为首页 收藏本站
查看: 841|回复: 0

[经验分享] hbase源码阅读-start flow

[复制链接]

尚未签到

发表于 2016-12-13 11:29:59 | 显示全部楼层 |阅读模式
  today i will learn to hit the hbase source codes.
  for  the rule from simple to difficult,i will get a standalone mode to run hbase to do this.
  ok,let's look at the shell
    start-hbase.sh

  it will start certain daemons ,e.g., HMaster,HResionServer,Zookeeper(if any) etc.details listed below:

if [ "$distMode" == 'false' ]
then
"$bin"/hbase-daemon.sh start master
else
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" start zookeeper
"$bin"/hbase-daemon.sh --config "${HBASE_CONF_DIR}" start master
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" \
--hosts "${HBASE_REGIONSERVERS}" start regionserver
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" \
--hosts "${HBASE_BACKUP_MASTERS}" start master-backup
fi
   yes,the relase of hbase list one more daemon named "maser-backup" then hbase-0.20.6,but now i dont care it as i will consume it  when need.
  ---
  今天启动0.94启动不了,发现异常:
  Exception in thread "main" java.lang.NoClassDefFoundError: hadoop,class:org/apache/hadoop/hbase/util/GetJavaProperty,params:java/library/path
  刚开始以为是导入到eclipse引起的,但后来想想只是导入没有做其它修改应该不是这个原因.
  由于对shell不熟,经过:docs阅读 -> goolge 后发现没相关问题,再阅读源码,调度.最終定位到bin/hbase文件:
  for 0.94

HADOOP_IN_PATH=$(PATH="${HADOOP_HOME:-${HADOOP_PREFIX}}/bin:$PATH" which hadoop 2>/dev/null)
#echo "xx $HADOOP_IN_PATH"  
if [ -f ${HADOOP_IN_PATH} ]; then
HADOOP_JAVA_LIBRARY_PATH=$(HADOOP_CLASSPATH="$CLASSPATH" ${HADOOP_IN_PATH} \
org.apache.hadoop.hbase.util.GetJavaProperty java.library.path 2>/dev/null)
if [ -n "$HADOOP_JAVA_LIBRARY_PATH" ]; then
JAVA_LIBRARY_PATH=$(append_path "${JAVA_LIBRARY_PATH}" "$HADOOP_JAVA_LIBRARY_PATH")
fi
CLASSPATH=$(append_path "${CLASSPATH}" `${HADOOP_IN_PATH} classpath 2>/dev/null`)
fi

   but 0.92:

#If avail, add Hadoop to the CLASSPATH and to the JAVA_LIBRARY_PATH
if [ ! -z $HADOOP_HOME ]; then
HADOOPCPPATH=""
if [ -z $HADOOP_CONF_DIR ]; then
HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" "${HADOOP_HOME}/conf")
else
HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" "${HADOOP_CONF_DIR}")
fi
if [ "`echo ${HADOOP_HOME}/hadoop-core*.jar`" != "${HADOOP_HOME}/hadoop-core*.jar" ] ; then
HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" `ls ${HADOOP_HOME}/hadoop-core*.jar | head -1`)
else
HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" `ls ${HADOOP_HOME}/hadoop-common*.jar | head -1`)
HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" `ls ${HADOOP_HOME}/hadoop-hdfs*.jar | head -1`)
HADOOPCPPATH=$(append_path "${HADOOPCPPATH}" `ls ${HADOOP_HOME}/hadoop-mapred*.jar | head -1`)
fi
for i in "${HADOOP_HOME}/lib/"*.jar; do
HADOOPCPPATH="${HADOOPCPPATH}:$i"
done
CLASSPATH=$(append_path "${CLASSPATH}" "${HADOOPCPPATH}")
if [ -d "${HADOOP_HOME}/lib/native" ]; then
JAVA_PLATFORM=`CLASSPATH=${HADOOPCPPATH} ${JAVA} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
if [ -d "${HADOOP_HOME}/lib/native/${JAVA_PLATFORM}" ]; then
JAVA_LIBRARY_PATH=$(append_path "${JAVA_LIBRARY_PATH}" "${HADOOP_HOME}/lib/native/${JAVA_PLATFORM}")
fi
fi
fi

   其实区别就是在这里,可能是这版本不再考虑HADOOP_HOME所以完全没有再利用它来处理.
  而在xx处输出是:/path/to/hadoop/bin/hadoop,再结合异常,断定了在添加hadoop到classpath时直接利用hadoop(shell)执行了GetJavaProperty(forjava.lib.path)引起的异常,当然这是可选的.所以当我把HADOP_IN_PATH comment后便正常操作了.
  经证实,是因为hadoop与hbase安装在同一台机器上引起的,因为hbase从$PATH中读取了hadoop (shell),于是乎使用hadoop相关jars来运行.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-313742-1-1.html 上篇帖子: hadoop2.0编译安装步骤 下篇帖子: hadoop2.2.0 搭建初体验
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表