hadoop, hbase, zookeeper集群搭建

来源:互联网 发布:南京财经大学知乎精华 编辑:程序博客网 时间:2024/05/03 22:31

Hadoop、ZooKeeper和HBase之间应该按照顺序启动和关闭:启动Hadoop—>启动ZooKeeper集群—>启动HBase—>停止HBase—>停止ZooKeeper集群—>停止Hadoop。

集群 管理脚步 hzh-manager.sh


三台机器,一台master (角色:namenode, hbase master, zookeeper), 两台slave(s1,s2) (角色:datanode, hbase region server, zookeeper), 

每台机器上设置:

在/etc/hosts中设置名字解析:

192.168.1.2  master
192.168.1.3  s1
192.168.1.4  s2

三台机器设置用户名hadoop密码hadoop,并且设置三台机器无密码ssh互访

下载hadoop-1.0.4.tar.gz,zookeeper-3.4.3.tar.gz, hbase-0.94.0.tar.gz

在/opt/下mkdir hadoop,下面所有的安装包都解压到这里

********************************

hadoop

********************************

1> 在master机器上解压hadoop-1.0.4.tar.gz,cd conf,修改配置文件:

hadoop-env.sh, 设置export JAVA_HOME=/opt/las/current/jdk (你的jdk安装路径)

core-site.xml

[html] view plaincopy
  1. <!-- Put site-specific property overrides in this file. -->  
  2.   
  3. <configuration>  
  4.   <property>  
  5.           <name>fs.default.name</name>  
  6.           <value>hdfs://master:9000</value>  
  7.         </property>  
  8.   
  9.         <property>  
  10.           <name>Hadoop.tmp.dir</name>  
  11.           <value>/tmp/Hadoop-root</value>  
  12.   </property>  
  13. </configuration>  
notes: fs.default.name,设置namenode所在主机,端口号是9000


hdfs-site.xml:

[html] view plaincopy
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <!-- Put site-specific property overrides in this file. -->  
  5.   
  6. <configuration>  
  7.   <property>  
  8.           <name>dfs.replication</name>  
  9.           <value>2</value>  
  10.   </property>  
  11. </configuration>  

notes: dfs.replication,设置数据块的复制次数,默认是3,如果slave节点数少于3,则写成相应的1或者2


mapred-site.xml

[html] view plaincopy
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <!-- Put site-specific property overrides in this file. -->  
  5.   
  6. <configuration>  
  7.   <property>  
  8.           <name>mapred.job.tracker</name>  
  9.           <value>http://master:9001</value>  
  10.   </property>  
  11. </configuration>  

notes: mapred.job.tracker,设置jobtracker所在机器,端口号9001


2> 修改conf/masters,内容设置为master, 修改conf/slaves,内容设置为:

s1

s2

3> 将解压以后并配置好的hadoop-1.0.4整个文件夹拷贝到两台slave上

4> 在master上,运行/bin/start-all.sh 并用jps命令查看如下:

[hadoop@master bin]$ /opt/las/current/jdk/bin/jps
22735 SecondaryNameNode
23068 Jps
22825 JobTracker
22568 NameNode

在s1上查看:

[hadoop@s1 logs]$  /opt/las/current/jdk/bin/jps
11201 TaskTracker
11097 DataNode
11319 Jps

在s2上查看:

[hadoop@s2 bin]$ /opt/las/current/jdk/bin/jps
29663 TaskTracker
29715 Jps
29561 DataNode


打开浏览器,输入http://192.168.1.2:50070 可以查看namenode,点击Live Nodes可以查看data node

输入http://192.168.1.2:50030查看master Hadoop Map/Reduce Administration

192.168.1.2是master的IP


*********************************************

zookeeper:

*********************************************

1>在master机器上解压zookeeper,cd conf,  cp zoo_sample.cfg zoo.cfg, 默认采用zoo.cfg作为配置文件

修改zoo.cfg:

[html] view plaincopy
  1. # The number of milliseconds of each tick  
  2. tickTime=2000  
  3. # The number of ticks that the initial  
  4. # synchronization phase can take  
  5. initLimit=10  
  6. # The number of ticks that can pass between  
  7. # sending a request and getting an acknowledgement  
  8. syncLimit=5  
  9. # the directory where the snapshot is stored.  
  10. # do not use /tmp for storage, /tmp here is just  
  11. # example sakes.  
  12. dataDir=/tmp/zookeeper  
  13. # the port at which the clients will connect  
  14. clientPort=2181  
  15.   
  16. server.1=s1:2888:3888  
  17. server.2=s2:2888:3888    
  18. server.3=master:2888:3888    

2> 将解压并配置好的zookeeper-3.4.3整个文件夹scp到s1与s2

3> 在dataDir目录/tmp/zookeeper(没有就手动创建)下,创建文件myid,文件的内容为以上对应的server.id中的id

如:master内容为3, 同样,s1与s2内容分别为1和2

4> 分别在三台机器上启动zookeeper:

bin/zkServer.sh start,

通过命令./zkServer.sh status查看状态,一个为leader,其他为follower

log文件:bin/zookeeper.out

如果三台机器没有都执行 zkServer.sh start 就在某台上执行 zkServer.sh status 就会报错。这时 可以忽略,原因是还有节点没有启动zookeeper,全部启动之后,自然就不会出异常了。


这时可以执行$ zkCli.sh -server xxx.xxx.xxx.xxx:2181,检查指定服务器是否成功启动。


******************************************************

                                     hbase

******************************************************

1> 在master机器上 解压hbase-0.94.0.tar.gz ,

将hbase-0.94.0/lib下面的hadoop-core-1.0.2.jar 删除并替换为已经安装的hadoop-core-1.0.4.jar

2> 修改conf/hbase-env.sh 里面JAVA_HOME路径 并设置export HBASE_MANAGES_ZK=false,这样禁止hbase使用自带的zookeeper

3> hbase-site.xml:

[html] view plaincopy
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3. <configuration>  
  4.   <property>  
  5.     <name>hbase.rootdir</name>  
  6.     <value>hdfs://master:9000/hbase</value>  
  7.   </property>  
  8.   <property>  
  9.     <name>hbase.cluster.distributed</name>  
  10.     <value>true</value>  
  11.   </property>  
  12.   <property>  
  13.     <name>hbase.zookeeper.quorum</name>  
  14.     <value>master,s1,s2</value>  
  15.   </property>  
  16. </configuration>  

4> 修改conf/regionservers,设置为

s1

s2

5> 将hbase-0.94修改后的整个文件加拷贝到s1, s2

6> 在master机器上运行.bin/start-hbase.sh,将会启动三台机器上的hbase

此时在master上运行jps命令:

[hadoop@master bin]$ /opt/las/current/jdk/bin/jps
22735 SecondaryNameNode
24604 Jps
23963 QuorumPeerMain
24479 HMaster
22825 JobTracker
22568 NameNode


s1上运行jps:

[las@3as03-guest1 hadoop]$ /opt/las/current/jdk/bin/jps
11953 Jps
11611 QuorumPeerMain
11201 TaskTracker
11097 DataNode
11892 HRegionServer

s2上运行jps:

[las@3as03-guest2 hadoop]$ /opt/las/current/jdk/bin/jps
30339 QuorumPeerMain
29663 TaskTracker
30739 HRegionServer
30810 Jps
29561 DataNode


在浏览器中打开192.168.1.2:60010可以看到hbase master的页面,打开192.168.1.3:60030或者192.168.1.4:60030 可以看到hbase region server的页面

如果页面打不开,则可能是hadoop安全模式的问题,可以查看log确定,如果是这个问题,可以通过下面的常见问题关掉。


整个系统启动过程为:hdoop, zookeeper, hbase,停止的过程相反


*************************

常见问题:

*************************

1> 在master上./start-all.sh以后,通过jps命令查看slave机器发现TaskTracker启动了,但是datanode没有启动,查看slave机器上的logs下的hadoop-xxx-datanode-xxx-xxx.log

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-las/dfs/data: namenode namespaceID = 1837940173; datanode namespaceID = 637354847

解决方案:http://blog.csdn.net/wh62592855/article/details/5752199, 这里采用的是删掉/tmp下面的文件系统重新bin/hadoop namenode -format


2> 退出hbase的时候一直处于等待状态,查看log:

Waiting for dfs to exit safe mode...

解决方案:在hadoop的bin目录下执行 ./hadoop dfsadmin -safemode leave 退出安全模式
原创粉丝点击