Hadoop+HBase+ZooKeeper三者关系与安装配置
这里有几个主要关系:
1.经过Map、Reduce运算后产生的结果看上去是被写入到HBase了,但是其实HBase中HLog和StoreFile中的文件在进行flush to disk操作时,这两个文件存储到了HDFS的DataNode中,HDFS才是永久存储。
2.ZooKeeper跟Hadoop Core、HBase有什么关系呢?ZooKeeper都提供了哪些服务呢?主要有:管理Hadoop集群中的NameNode,HBase中HBaseMaster的选举,Servers之间状态同步等。具体一点,细一点说,单只HBase中ZooKeeper实例负责的工作就有:存储HBase的Schema,实时监控HRegionServer,存储所有Region的寻址入口,当然还有最常见的功能就是保证HBase集群中只有一个Master。
2、搭建完全分布式集群
在做hadoop,hbase这方面的工作有一段时间了,经常有刚接触这些东西的身边朋友,向我询问基本环境的搭建问题,于是就想以回忆录的形式把基本配置的步骤整理出来,以便刚接触的朋友做个参考.
- tar
–zxvf jdk-7u9-linux-i586.tar.gz - sudo
chmod 777 jdk-1.7.0_09
把jdk的路径加到环境变量中:
- vim.tiny
/etc/profile
- JAVA_HOME=/usr/java/jdk1.7.0_09
-
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:PATH -
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
使修改的操作生效:
- source
/etc/profile
- java
-version
- sudo
adduser cloud - password
cloud
- sudo
gedit /etc/hosts
- 10.2.11.1
namenode -
10.2.11.2 datanode1 -
10.2.11.3 datanode2 -
10.2.11.4 datanode3
3.在/home/cloud/目录下建立一个文件夹project,命令如下:
- mkdir
project
- tar
–zxvf hadoop-1.0.3.tar.gz
进行解压文件.进入配置目录,开始配置.
- cd
hadoop-1.0.3/conf
5. 使用命令:
- JAVA_HOME=/usr/java/jdk1.7.0_09/
- <property>
-
<name>hadoop.tmp.dir</name> -
<value>/home/cloud/project/tmp</value> - </property
> - <
property > -
<name> fs.default.name</name> -
<value>hdfs://namenode:9000</value> - </property
>
7.
- <property
> - <name>dfs.repplication</name>
- <value>3</value>
- </property
> - <property>
- <name>dfs.data.dir</name>
- <value>/home/cloud/project/tmp/data</value>
- </
property >
- <property>
- <name>mapred.job.tracker</name>
- <value>namenode:9001</value>
- </property
>
- namenode
- datanode1
- datanode2
-
datanode3
- mkdir
/home/cloud/.ssh
在namenode节点下,使用命令ssh-keygen –t rsa,然后一直回车(中间不用输入任何其他信息),直到结束,然后使用命令cd .ssh,
- cp
id_rsa.pub authorized.keys
使用远程传输,把authorized.keys分别复制到其他机器的.ssh目录下面,命令如下:
- scp
authorized_keys datanode1:/home/cloud/.ssh - scp
authorized_keys datanode2:/home/cloud/.ssh -
scp authorized_keys datanode3:/home/cloud/.ssh
- chmod
644 authorized_keys
12.把配置好的hadoop分别拷贝到集群中其他机器上,命令如下:
- scp
–r hadoop-1.0.3 datanode1:/home/cloud/project - scp
–r hadoop-1.0.3 datanode2:/home/cloud/project -
scp –r hadoop-1.0.3 datanode3:/home/cloud/project
13.在namenode机器下,进入hadoop的安装目录,对文件系统进行格式化:
- bin/hadoop
namenode –format
14. 启动集群: bin/start-all.sh.
- bin/hadoop
dfsadmin –report
查看文件系统的使用情况。
- jps
- tar
-zxvf zookeeper-3.4.4.tar.gz
- cp
zoo_sample.cfg zoo.cfg
-
dataDir=/home/cloud/project/tmp/zookeeper/data - server.1
= datanode1:7000:7001 - server.2
=datanode2:7000:7001 - server.3
=datanode3:7000:7001
4.把zookeeper分别远程拷贝datanode1,datanode2,datenode3,使用如下命令:
- scp
–r zookeeper-3.4.4 datanode1:/home/cloud/project - scp
–r zookeeper-3.4.4 datanode2:/home/cloud/project - scp
–r zookeeper-3.4.4 datanode3:/home/cloud/project
5.分别在刚才的datanode节点/home/cloud/project/tmp/zookeeper/data目录下,新建文件myid,然后使用命令
- vim.tiny
myid
6.开启zookeeper服务,在三台datanode机器的zookeeper安装目录下使用命令:
- bin/zkServer.sh
start
三.部署hbase
1.解压缩hbase的软件包,使用命令:
- tar
-zxvf hbase-0.94.2.tar.gz
2.进入hbase的配置目录,在hbase-env.sh文件里面加入java环境变量.即:
- JAVA_HOME=/usr/java/jdk1.7.0_09/
加入变量:
- export
HBASE_MANAGES_ZK=false
3. 编辑hbase-site.xml ,添加配置文件:
- <property>
- <name>hbase.rootdir</name>
- <value>hdfs://namenode:9000/hbase</value>
- </property>
- <property>
- <name>hbase.cluster.distributed</name>
- <value>true</value>
- </property>
- <property>
- <name>hbase.zookeeper.quorum</name>
- <value>datanode1,datanode2,datanode3</value>
- </property>
- <property>
- <name>hbase.zookeeper.property.dataDir</name>
- <value>/home/cloud/project/tmp/zookeeper/data</value>
- </property>
4. 编辑配置目录下面的文件regionservers. 命令:
- vim.tiny
regionservers
加入如下内容:
- datanode1
- datanode2
- datandoe3
5. 把Hbase复制到其他机器,命令如下:
- scp
-r hbase-0.94.2 datanode1:/home/cloud/project - scp
-r hbase-0.94.2 datanode2:/home/cloud/project - scp
-r hbase-0.94.2 datanode3:/home/cloud/project
6. 开启hbase服务。命令如下:
- bin/start-hbase.sh
可以使用bin/hbaseshell 进入hbase自带的shell环境,然后使用命令version等,进行查看hbase信息及建立表等操作。