2024年2月8日发(作者:)
HBASE 安装
一、安装指南
二、常见问题
一、
安装指南
Hadoop+Hbase安装配置实录
2010-10-12 22:53
生产环境:
3台机器:master(192.168.0.61),slave1(192.168.0.62),slave2(192.168.0.63)
注意:hostname设置为master/slave1/slave2
操作系统:rhel5.4 x86_64
master做为namenonde,将slave1和slave2做为datanode
1.在master:(在slave1和slave2上操作和以下相同)
vi /etc/hosts
192.168.0.61 master
192.168.0.62 slave1
192.168.0.63 slave2
2.用root操作
3.免密码登录
#ssh-keygen -t rsa #建立ssh目录,敲回车到底 ,这一步需要先在每台机器上执行。
在master上
#scp ~/.ssh/id_ root@slave1:/root/.ssh/id__m 将master上的密钥传到slave1的/home/hadoop下
在slave1上
#cat /root/.ssh/id__m >> ~/.ssh/authorized_keys
#chmod 644 ~/.ssh/authorized_keys
反复操作第3步,完成master<-->slave1 master<-->slave2的免密码登录
这样主节点和从节点之间就可以不用密码直接ssh访问,另外,在启动hadoop时需要master ssh master,
因此,在master的~/.ssh下,也执行下cat id_ >> authorized_keys即可。
PDF 文件使用 "pdfFactory Pro" 试用版本创建
4.安装JDK到/usr/local下命名为jdk6
然后:
编辑三台机器的/etc/profile,增加如下内容
export JAVA_HOME=/usr/local/jdk6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HADOOP_HOME=/hadoop/hadoop
export HBASE_HOME=/hadoop/hbase
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin
#vi /root/.bashrc
增加
export HADOOP_CONF_DIR=/hadoop/hadoop-config
export HBASE_CONF_DIR=/hadoop/hbase-config
5、防火墙
各机器加入iptables策略:
#iptables -I INPUT -s 192.168.0.0/255.255.255.0 -j ACCPET
#service iptables save
-----------------------------------------
hadoop配置:
1.下载安装
#cd /hadoop
#wget
/apache-mirror//hadoop/core/hadoop-0.20.2/
#tar -zxvf
#ln -s hadoop-0.20.2 hadoop
由于上述目录中hadoop的配置文件和hadoop的安装目录是放在一起的,这样一旦日后升级hadoop版本的时候所有的配置文件都会被覆盖,因 此将配置文件与安装目录分离,一
种比较好的方法就是建立一个存放配置文件的目录,/hadoop/hadoop-config/,然后将 /hadoop/hadoop/conf/目录中的,slaves,,masters, hdfs-
,,这6个文件拷贝到 /hadoop/hadoop-config/目录中,并指定环境变量$HADOOP_CONF_DIR指向该目录。环境变量在/root/.bashrc
中设定。
#mkdir /hadoop/hadoop-config
#cd /hadoop/hadoop/conf/
#cp slaves masters
/hadoop/hadoop-config/
PDF 文件使用 "pdfFactory Pro" 试用版本创建
2.修改6个文件
masters:
master
slaves:
slave1
slave2
#切忌不要创建:/hadoop/hadoop/tmp
:
export JAVA_HOME=/usr/local/jdk6
export HADOOP_PID_DIR=/hadoop/hadoop/tmp
:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href=""?>
#切忌不要创建:/hadoop/hadoop/name
#mkdir /hadoop/hadoop/data
:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href=""?>
PDF 文件使用 "pdfFactory Pro" 试用版本创建
:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href=""?>
3、格式化namenode
#cd /hadoop/hadoop/bin
#./hadoop namenode -format
#cd /hadoop
#scp -r ./* root@slave1:/hadoop/
#scp -r ./* root@slave2:/hadoop/
到slave1和slave2上,分别重做软链接
#cd /hadoop
#rm -rf hadoop
#ln -s hadoop-0.20.2 hadoop
4、启动所有hadoop守护进程
# ./
说明:
在bin/下面有很多启动脚本,可以根据自己的需要来启动。
* 启动所有的Hadoop守护。包括namenode, datanode,
jobtracker, tasktrack
* 停止所有的Hadoop
* 启动Map/Reduce守护。包括Jobtracker和Tasktrack
* 停止Map/Reduce守护
* 启动Hadoop DFS守护.Namenode和Datanode
* 停止DFS守护
[root@master bin]# jps
6813 NameNode
7278 Jps
7164 JobTracker
7047 SecondaryNameNode
出现4个这样的进程,且datanode没有error,同时访问ui正常才算成功。
ui:masterip:50070 --web UI for HDFS name node(s)
PDF 文件使用 "pdfFactory Pro" 试用版本创建
masterip:50030 --web UI for MapReduce job tracker(s)
slaveip:50060 --web UI for task tracker(s)
5、hdfs简单测试
#cd /hadoop/hadoop/bin
#./hadoop dfs -mkdir testdir
#./hadoop dfs -put /root/ testdir/-dfs
将/root/ 存储到hdfs中的testdir中,重命名为-dfs
#./hadoop dfs -ls
#./hadoop dfs -ls testdir
----------------------------------
1、hbase安装部署
#cd /hadoop
#wget //hbase/hbase-0.20.6/
#tar -zxvf
#ln -s hbase-0.20.6 hbase
#mkdir hbase-config
#cd /hadoop/hbase/conf/
#cp regionservers /hadoop/hbase-config/
2、配置文件修改
#mkdir /hadoop/hbase/tmp
#vim /hadoop/hbase-config/
增加
export JAVA_HOME=/usr/local/jdk6
export HBASE_MANAGES_ZK=true
export HBASE_PID_DIR=/hadoop/hbase/tmp
#vim
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href=""?>
PDF 文件使用 "pdfFactory Pro" 试用版本创建
配置hbase服务器名称
#vi regionservers
slave1
slave2
3、复制hbase文件
在master上
#cd /hadoop
#scp -r hbase-0.20.6 hbase-config
root@slave1:/hadoop/
#scp -r hbase-0.20.6 hbase-config
root@slave2:/hadoop/
在slave1和slave2上,分别重做软链接
#cd /hadoop
#ln -s hbase-0.20.6 hbase
4、测试
在master上启动
#cd /hadoop/hbase/bin
#./hbase shell
HBase Shell; enter 'help
Version: 0.20.6, r965666, Mon Jul 19 16:54:48 PDT 2010
hbase(main):001:0> create 'test','data'
0 row(s) in 1.1920 seconds
hbase(main):002:0> list
test
1 row(s) in 0.0200 seconds
hbase(main):003:0> quit
PDF 文件使用 "pdfFactory Pro" 试用版本创建
二、常见问题
HBase 官方文档,全面介绍hbase安装配置:
/wp-content/hbase/#hbase_default_configurations
1 在安装中出现的问题:
用./启动HBase后,执行hbase shell
# bin/hbase shell
HBase Shell; enter 'help
Version: 0.20.6, rUnknown, Thu Oct 28 19:02:04 CST 2010
接着创建表时候出现如下情况:hbase(main):001:0> create 'test',''c
NativeException: NotRunningException:
null
jps下,发现主节点上HMaster没有启动,查理HBase log(logs/)里有下面异常:
FATAL r: Unhandled exception.
Starting shutdown.
ption: Call to node1/10.64.56.76:49002 failed on local
exception: eption
解决:
从hadoop_home/下面cp一个hadoop/到hbase_home/lib下。
因为Hbase建立在Hadoop之上,所以他用到了,这个Jar在 lib 里面。这个jar是hbase自己打了branch-0.20-append 补丁的. Hadoop使用的和Hbase使用的 必须 一致。所以你需要将 Hbaselib 目录下的替换成Hadoop里面的那个,防止版本冲突。比方说CDH的版本没有HDFS-724而branch-0.20-append里面有,这个HDFS-724补丁修改了RPC协议。如果不替换,就会有版本冲突,继而造成严重的出错,Hadoop会看起来挂了。
再用./启动HBase后,jps下,发现主节点上HMaster还是没有启动,在HBase log里有下面异常:
FATAL r: Unhandled exception.
Starting shutdown.
sDefFoundError:
PDF 文件使用 "pdfFactory Pro" 试用版本创建
org/apache/commons/configuration/Configuration
解决:
在NoClassDefFoundError,缺少
org/apache/commons/configuration/Configuration
果断给他加一个commons-configuration包,
从hadoop_home/lib下面cp一个hadoop/lib/到hbase_home/lib下。
(集群上所有机子的hbase配置都需要一样)
2 注意事项:
1)、先启动hadoop后,再开启hbase
2)、去掉hadoop的安全模式:hadoop dfsadmin -safemode leave
3)、把/etc/hosts里的ubuntu的IP改为服务器当前的IP
4)、确认hbase的中
与hadoop的中
红字部分保持一致
6)、重新执行./之前,先kill掉当前的hbase和zookeeper进程
客户端编程配置
一、程序准备
需要环境:Linux操作系统,eclipse,JDK
所需jar包:
添加HBase的HMaster和HRegionServer的DNS,至本地Linux操作系统/etc/hosts文件中。如果没有这步,将会出现错误:Exception in thread "main"
PDF 文件使用 "pdfFactory Pro" 试用版本创建
lArgumentException: Could not resolve the DNS name of ***:6000
二、编写代码:
package ;
import ption;
import ist;
import ;
import uration;
import onfiguration;
import nDescriptor;
import Descriptor;
import ue;
import NotRunningException;
import perConnectionException;
import ;
import ;
import dmin;
import ;
import ;
import Scanner;
import ;
import ;
import ;
public class HBaseBasic {
private static Configuration conf = null;
static {
Configuration HBASE_CONFIG = new Configuration();
//与hbase/conf/中配置的值相同
HBASE_("", "192.168.1.1");
//与hbase/conf/中Port配置的值相同
HBASE_("Port",
"2181");
conf = (HBASE_CONFIG);
}
PDF 文件使用 "pdfFactory Pro" 试用版本创建
public static void creatTable(String tableName, String[] familys)
throws Exception {
HBaseAdmin admin = new HBaseAdmin(conf);
if (xists(tableName)) {
n("table already exists!");
} else {
HTableDescriptor tableDesc = new
HTableDescriptor(tableName);
for(int i=0; i<; i++){
ily(new HColumnDescriptor(familys[i]));
}
Table(tableDesc);
n("create table " + tableName + " ok.");
}
}
public static void deleteTable(String tableName) throws Exception {
try {
HBaseAdmin admin = new HBaseAdmin(conf);
eTable(tableName);
Table(tableName);
n("delete table " + tableName + " ok.");
} catch (MasterNotRunningException e) {
tackTrace();
} catch (ZooKeeperConnectionException e) {
tackTrace();
}
}
public static void addRecord (String tableName, String rowKey, String
family, String qualifier, String value)
throws Exception{
try {
HTable table = new HTable(conf, tableName);
Put put = new Put(s(rowKey));
(s(family),s(qualifier),s(value));
(put);
n("insert recored " + rowKey + " to table " +
tableName +" ok.");
} catch (IOException e) {
tackTrace();
PDF 文件使用 "pdfFactory Pro" 试用版本创建
}
}
public static void delRecord (String tableName, String rowKey) throws
IOException{
HTable table = new HTable(conf, tableName);
List list = new ArrayList();
Delete del = new Delete(es());
(del);
(list);
n("del recored " + rowKey + " ok.");
}
public static void getOneRecord (String tableName, String rowKey)
throws IOException{
HTable table = new HTable(conf, tableName);
Get get = new Get(es());
Result rs = (get);
for(KeyValue kv : ()){
(new String(()) + " " );
(new String(ily()) + ":" );
(new String(lifier()) + " " );
(estamp() + " " );
n(new String(ue()));
}
}
public static void getAllRecord (String tableName) {
try{
HTable table = new HTable(conf, tableName);
Scan s = new Scan();
ResultScanner ss = nner(s);
for(Result r:ss){
for(KeyValue kv : ()){
(new String(()) + " ");
(new String(ily()) + ":");
(new String(lifier()) + " ");
(estamp() + " ");
n(new String(ue()));
}
}
PDF 文件使用 "pdfFactory Pro" 试用版本创建
} catch (IOException e){
tackTrace();
}
}
public static void main (String [] agrs) {
try {
String tablename = "student";
String[] familys = {"id", "name","score"};
//able(tablename, familys);
//add record zkb
//ord(tablename,"2","id","","095832");
//ord(tablename,"2","name","","zmac");
//ord(tablename,"2","score","math","97");
//ord(tablename,"2","score","chinese","87");
//ord(tablename,"2","score","english","85");
//add record baoniu
n("===========get one record========");
Record(tablename, "2");
n("===========show all record========");
Record(tablename);
n("===========del one record========");
ord(tablename, "2");
Record(tablename);
} catch (Exception e) {
tackTrace();
}
}
}
运行会,你将看到首先创建数据库student,其字段为id,name,score{english,math,chinese},然后向该数据表插入数据,再查询记录,删除记录等。
PDF 文件使用 "pdfFactory Pro" 试用版本创建
本文发布于:2024-02-08 10:56:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170736101467315.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |