1. 最初接触hadoop的时候使用的版本是0.20.2,现在2.0版本都出了。当时搭建过一个hadoop0.20.2和hbase0.20.6的集群环境,现在为了测试学习的方便,主备搭建一个伪分布式环境,使用Hadoop-1.0.3和hbase-0.92.1。
2. 首先需要做的是对以前hadoop的升级,从0.20.2升级到1.0.3。升级过程如下所示:
下面红字部分转自:http://www.cnblogs.com/ggjucheng/archive/2012/04/22/2465649.html
1.运行dfsadmin -upgradeProgress status 检查是否存在备份 如果是第一次升级 就不存在备份(在升级Hadoop前,如果已经存在备份,需要先结束 finalize 它。)
2.备份dfs.namenode.dir下文件,同时要备份下hdfs的文件目录的元数据信息:
bin/hadoop fsck / -files -blocks -locations > dfs-v-old-fsck-1.log
bin/hadoop dfs -lsr / > dfs-v-old-lsr-1.log
bin/hadoop dfsadmin -report > dfs-v-old-report-1.log
3.停止所有节点 bin/stop-all.sh
4.在所有节点上重新部署hadoop 并替换conf文件夹下所有文件(就是将原有的hadoop-0.19.1更名为hadoop-0.19.1-oldverstion,然后解压hadoop-0.19.2.tar.gz 将0.19.2中的conf文件替换为0.19.1中的conf文件夹)
并且要对照修改hadoop-site.xml中的路径指定是否正确
5.使用 bin/start-dfs.sh -upgrade 进行升级(DFS从一个版本升级到另外一个版本的时候,NameNode和DataNode使用的文件格式有可能会改变。当你第一次使用新版本的时候,你要告诉Hadoop 去改变HDFS版本,否则,新版本不会生效)
6.监控升级情况和升级问题处理
开始升级,你可以通过
bin/hadoop dfsadmin -upgradeProgress
命令来查看版本升级的情况。
当然你可以使用
bin/hadoop dfsadmin -upgradeProgress details
来查看更多的详细信息。
当升级过程被阻塞的时候,你可以使用
bin/hadoop dfsadmin -upgradeProgress force
来强制升级继续执行(当你使用这个命令的时候,一定要慎重考虑)。
当HDFS升级完毕后,Hadoop依旧保留着旧版本的有关信息,
以便你可以方便的对HDFS进行降级操作。
可以使用bin/start-dfs.sh -rollback来执行降级操作。
7.对比现有hdfs的文件目录的元数据信息和升级的差异。
8.升级完成,Hadoop一次只保存一个版本的备份,当新版本运行几天以后还是没有出现什么问题,你就可以使用运行一段时间后 没有问题再执行升级终结操作
bin/hadoop dfsadmin -finalizeUpgrade
命令把旧版本的备份从系统中删掉了。删除以后rollback 命令就失效了。
基本上按照上面的步骤,不会出现什么错误。
3. 安装hbase,主要是配置文件hbase-site.xml,hbase-env.xml两个文件。hbase的安装主要有两种方式:单机版和分布式版;其中分布式版又分为:分布式和伪分布式。
(1)单机版的安装很简单,利用本地文件系统,不使用Hdfs。只需修改hbase-env.xml中的JAVA_HOME就可以了。
(2)伪分布式版:这个就有点迷糊了。apache官网上的配置,可以把
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
可是我把上面的设为true后,总是出现下面的问题:
1 2012-06-21 22:20:37,248 INFO org.apache.zookeeper.client.ZooKeeperSaslClient: Client will not SASL-authenticate because the default JAAS configuration section 'Client' could not be found. If you are not using SASL, you may ignore this. On the other hand, if you expected SASL to work, please fix your JAAS configuration. 2 2012-06-21 22:20:37,248 WARN org.apache.zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect 3 java.net.ConnectException: Connection refused 4 at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 5 at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:592) 6 at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:286) 7 at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1035) 8 2012-06-21 22:20:37,350 WARN org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase 9 176,9
着实令人抓狂。如果把其设置为false,总是不能启动zookeeper服务,真是郁闷!!!
(3)分布式版。这种配置到没什么疑问的,网上的资料很多,注意网络,防火墙之类的问题,配置起来问题不大。
4. 单机版的Hbase测试也够用了。下面是hbase-site.xml的配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<
configuration
>
<
property
>
<
name
>hbase.rootdir</
name
>
</
property
>
<
property
>
<
name
>hbase.zookeeper.quorum</
name
>
<
value
>localhost</
value
>
</
property
>
<
property
>
<
name
>hbase.zookeeper.property.dataDir</
name
>
<
value
>/home/nslab/HbaseInstall/zookeeperData</
value
>
</
property
>
<
property
>
<
name
>hbase.zookeeper.property.clientPort</
name
>
<
value
>22222</
value
>
</
property
>
<
property
>
<
name
>hbase.cluster.distributed</
name
>
<
value
>false</
value
>
</
property
>
<
property
>
<
name
>dfs.support.append</
name
>
<
value
>true</
value
>
</
property
>
<
property
>
<
name
>dfs.datanode.max.xceievers</
name
>
<
value
>4096</
value
>
</
property
>
</
configuration
>
|
5. 将hbase-env.xml中的:export HBASE_MANAGES_ZK=true。不过单机版zookeeper怎么也没老老实实的启动,有大牛求指教。在使用上面的配置关闭hbase时,日志上会出现下面的异常,原因菜鸟我还不知道啊~~~~
2012-06-21 23:22:01,864 WARN org.apache.zookeeper.server.NIOServerCnxn: caught end of stream exception
EndOfStreamException: Unable to read additional data from client sessionid 0x1380f9f60170003, likely client has closed socket
at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:220)
at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:224)
at java.lang.Thread.run(Thread.java:636)
6. 这些配置网上一般都有,不过照搬的话总会出现各种错误,个人感觉官方文档最重要,可以多参考官方文档。但是也会遇到一些问题。
7. 当遇到这类配置文件,出现莫名的错误无从下手时,可以采取下面的方法:a.google or 百度两个各有所长;b. 去除一些不确定的配置选项,从最简单的文件配置做起。
8. 好些错误网上都有解决方案,具体配置的时候还是要多看看别人的技术文档。
9. 有时候一些小问题确实很折磨人,没办法,谁让我们做技术呢~~~~