【原创】Hadoop HBase集群安装
HADOOP HBASE 安装部署
Hadoop 1.2.1版本 HBase 0.94.14版本
声明:所有的配置均是在主节点上完成,配置完成后只需将主节点已配置好的文件夹拷贝到从节点对应的目录即可。
集群的扩展修改部分:
1、修改/hadoop-1.2.1/conf/下的master和slaves文件
2、修改/etc/hosts配置文件
3、编辑regionservers文件,添加或者删除RegionServer
Linux主机名改动:
完整:
第一步:
#hostname oratest(修改后的名字 )
第二步:
修改/etc/sysconfig/network中的hostname
第三步:
修改/etc/hosts文件
重启。。。。。。
权限更改:chmod u+x /home/lt/hadoop/bin/*
切记:任何配置文件中添加东西时只在指定位置添加,不要随意更改配置文件内容。所有文件第一行都不要空出,要置顶。
一 Hadoop集群安装
注意:配置中如果是master统一是master,是masternode就统一是masternode。不可以出现hosts文件中是master而其他地方时masternode的情况。
1、Hadoop的安装依赖Java环境,首先安装JDK ,可参考网站
http://blog.csdn.net/tabactivity/article/details/12114941 方法一此处不再赘述。
10.9.80.36 masternode
10.9.80.34 hbase1
10.9.80.35 hbase2
2、配置三台机器无密码ssh登陆
以masternode为例,在masternode上执行如下操作:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回车,完成后会在~/.ssh/生成两个文件:id_dsa 和id_dsa.pub。这两个是成对出现,类似钥匙和锁。再把id_dsa.pub 追加到授权key 里面(当前并没有authorized_keys文件):
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
完成后可以实现无密码登录本机:
$ ssh localhost
把masternode上的id_dsa.pub 文件追加到hbase1和hbase2的authorized_keys 内( 以10.9.80.34节点为例):
3、拷贝masternode的id_dsa.pub文件:(必须在.ssh目录下拷贝才会成功)
$ cd ~/.ssh
$ scp id_dsa.pub hbase1:/root/
b. 登录hbase1,进入/root目录执行:
$ cat id_dsa.pub >> .ssh/authorized_keys
之后可以在masternode上不输入密码直接访问hbase1 ,同样方式配置无密码登录hbase2。
同样方法配置hbase1、 hbase2的对其他机器无密码登录。
4、下载Hadoop 安装文件,这次安装用的是1.2.1版(hadoop-1.2.1-bin.tar.gz)
5、在/home目录下新建opt文件夹,解压hadoop到/opt目录下
tar -zxvf hadoop-1.2.1-bin.tar.gz -C /home/opt
6、修改/home/opt/hadoop-1.2.1/conf/hadoop-env.sh文件的环境变量:
主要是添加java路径
export JAVA_HOME=/usr/java/jdk1.6.0_45
7、修改/home/opt/hadoop-1.2.1/conf/core-site.xml配置文件,在configuration中添加内容如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop_tmp</value>
<description>A base for other temporary directories.
</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://masternode:9000</value>(加黑部分为主节点名字)
</property>
</configuration>
8、修改/home/opt/hadoop-1.2.1/conf/hdfs-site.xml配置文件,在configuration中添加内容如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home//hadoop-1.2.1/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value> (备份数目)
</property>
</configuration>
9、修改/home/opt/hadoop-1.2.1/conf/mapred-site.xml配置文件,在configuration中添加内容如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>masternode:9001</value>(主节点名字)
</property>
</configuration>
10、修改/home/opt/hadoop-1.2.1/conf/下的master和slaves文件
master文件写入
masternode
slaves文件写入
hbase1
hbase2
11、修改/etc/hosts配置文件,内容如下:
127.0.0.1 localhost
10.9.80.36 masternode
10.9.80.34 hbase1
10.9.80.35 hbase2
12、修改/etc/profile配置文件,在末尾追加以下内容,并输入source/etc/profile使之生效:
export JAVA_HOME=/usr/java/jdk1.6.0_45
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
13、将/home/opt/hadoop-1.2.1拷贝到hbase1和hbase2对应的目录下。将/ect/profile和/etc/hosts也拷贝到hbase1和hbase2机器上。
(注意profile需要做生效操作。source /etc/profile)
$ scp -r hadoop-1.2.1 hbase1:/home/opt/
$ scp -r hadoop-1.2.1 hbase2:/home/opt/
14、配置结束后,在bin文件夹下格式化hdfs,./hadoop namenode –format
然后启动hdfs,./start-all.sh
用jps命令查看是否成功启动所有进程。
二 安装HBase
本次安装用的HBase的版本为0.94.14-security,下载后解压缩到/home/opt目录下
1、修改hbase-site.xml配置文件,在configuration里添加
<property>
<name>hbase.rootdir</name>
<value>hdfs://masternode:9000/hbase</value>(主节点名字)
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>masternode,hbase1,hbase2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/opt/zookeeper_data</value>
</property>
<property>
<name>hbase.master.info.bindAddress</name>
<value>masternode</value>(主节点名字)
<description>The bind address for the HBase Master web UI
</description>
</property>
2、修改hbase-env.sh文件,加入:
export JAVA_HOME=/usr/java/jdk1.6.0_45
export HBASE_MANAGES_ZK=true
3、编辑regionservers文件,添加两个RegionServer:
hbase1
hbase2
4、配置另外两台
将hbase安装文件拷贝到另两台机器:
$ scp -r hbase-0.94.14-security hbase1:/home/opt/
$ scp -r hbase-0.94.14-security hbase2:/home/opt/
然后登陆hbase1和hbase2的/home/opt/下,用ls命令查看即可看到对应的文件。
运行HBase首先开启Hadoop,开启Hadoop之后,在HBase的bin目录下执行
./start-hbase.sh,用jps查看是否启动成功
另外可以通过web页面查看集群状态等(需要设置好本地hosts):
http://master:60010 (外地访问的话将master换成IP地址)
注意事项:三台机器要把防火墙关闭,否则,集群间连接不上;
HBase配置完成后要检查三台机器的时间,误差3s内可以,否则,满足不了时钟一致性,开启不了HBase集群
关于异常:java.io.IOException:incompatible namespaceIDs in /home/admin/joe.wangh/hadoop/data/dfs.data.dir.namenode namenodeID = 898136669;datanode namespaceID = 212744065
http://blog.csdn.net/wanghai__/article/details/5752199 给出两种解决办法。
http://blog.csdn.net/zwx19921215/article/details/20804991 安全模式修改方法。
Hadoop中bin文件下或者是HBASE的bin文件,其master文件中添加主节点的名字如:master。在regionserver或者是slaves文件中添加子节点的名字如:hbase1 hbase2,其中不能出现主节点的名字。