hadoop与hbase笔记与总结

来源:互联网 发布:高三逆袭理科知乎 编辑:程序博客网 时间:2024/06/05 22:42

hadoop_hbase的安装教程

其中hadoop和hbase的配置文件有一点要说明

hadoop下的/etc/hadoop/core-site.xml

  <property>      <name>fs.default.name</name>      <value>hdfs://localhost:9000</value>   </property>

与hbase下的conf/hbase-site.xml

<property>   <name>hbase.rootdir</name>                                                         <value>hdfs://localhost:9000/hbase</value></property>
两者的地址与端口号必须一致,如果不一致就会出现很严重的错误
如果配置导致了hadoop启动了但是hbase启动不了有以下原因
如果出现了hbase启动失败的情况首先打开/etc/hosts文件添一行
192.168.1.105 datanode1
电脑ip地址        名字
然后打开/etc/sysconfig/network添加:HOSTNAME=datanode1
HOSTNAME=名字
然后将hadoop下的/etc/hadoop/core-site.xml改成:
  <property>      <name>fs.default.name</name>      <value>hdfs://datanode1:9000</value>   </property>

与hbase下的conf/hbase-site.xml改成:
<property>   <name>hbase.rootdir</name>                                                         <value>hdfs://datanode1:9000/hbase</value></property>

如果要启动hadoop与和hbase首先要启动hadoop,运行start-all.sh运行完后再执行jps命令如果出现DataNode与NameNode节点两个必须同时在就说明hadoop hdfs启动成功,如果出现NodeManager和ResourceManager就说hadoop yarn启动成功,hadoop hdfs和hadoop yarn必须同时启动成功才能说明hadoop启动成功
如果DataNode与NameNode有一个没有启动那hadoop都没有启动,后面的Hbase也不能正常运行
如果正常配置了后启动hadoop在jps发现没有DataNode,说明没有启动然后去localhost:50070的logs链接里查看hadoop-root-datanode-datanode1.log 里面出现了一个警告与失败
2016-07-27 08:18:18,964 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /home/hadoop/hadoopinfra/hdfs/datanode: namenode clusterID = CID-1c9ca58d-5e17-4349-91a8-850fb63c8349; datanode clusterID = CID-ebc2f079-e103-46cc-96d1-ca3ec64ad4b72016-07-27 08:18:18,965 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to datanode1/192.168.1.105:9000. Exiting. java.io.IOException: All specified directories are failed to load.at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1358)at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1323)at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:223)at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:802)at java.lang.Thread.run(Thread.java:722)2016-07-27 08:18:18,967 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool <registering> (Datanode Uuid unassigned) service to datanode1/192.168.1.105:9000
后来在网上查到datanode启动不成功是因为datanode的clusterID与namenode的clusterID不一致造
成的原因是:没有删除datanode就格式化namenode,则会引起datanode与nodenode版本不一致的错误
然后就去查看了datanode和namenode的配置文件hdfs-site.xml:内容如下                               
<configuration>   <property>      <name>dfs.replication</name >      <value>1</value>   </property>   <property>      <name>dfs.name.dir</name>      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>   </property>   <property>      <name>dfs.data.dir</name>      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>   </property></configuration>

然后删除了datanode:
命令:rm -rf  /home/hadoop/hadoopinfra/hdfs/datanode
然后从新格式化namenode:命令hadoop namenode -format
然后从新启动hadoop start-all.sh这次就启动成功了jps也看的到DataNode了
HBase的启动
启动hbase前首先要启动zookeeper运行zkServer.sh start然后在启动hbase
./hbase shell的时候出现了一个错误ERROR:Can't get master address from Zookeeper; znode data == null
后来在网上看到了一个解决方法
删除datanode节点中的临时文件
重新格式化namenode
重启hadoop
重启hbase
我是这样做的rm -rf /home/hadoop/hadoopinfra/hdfs/datanode
hadoop namenode -format
start-all.sh
第一次启动hadoop没有datanode后来又起了一次出来了
cd /usr/local/Hbase/bin
./start-hbase.sh
hbase启动成功
今天还遇到了一个hbase的错误解决方案链接:http://www.dataguru.cn/thread-453123-1-1.html
总结hbase启动不了的原因大多是因为hadoop没启动好和zookeeper没有启动如果hbase在zookeeper前启动的话会出现很多错误,hadoop和zookeeper启动后才能启动hbase不然就会出错

0 0
原创粉丝点击