在成熟平台上学习了hadoop的基本知识后,开始尝试自己搭建hadoop平台,在搭建伪分布式成功的基础上,进行了真正分布式的部署。
前期搭建的伪分布式,采用的版本分别是:hadoop-1.2.1+apache-hive-0.13.0+hbase-0.98.1,这个版本组合经过测试可以正常使用,所有搭建分布式的环境也采用了这些版本。
环境规划
机器名 IP 角色
master 100.2.12.85 nameNode,master,jobtracker
slave1 100.2.12.13 Datanode,slave,tasktracker
slave2 100.2.12.97 Datanode,slave,tasktracker
slave3 100.2.12.94 Datanode,slave,tasktracker
一、Hadoop安装
1、根据规划对各个机器设置hostname
2、配置/etc/hosts,每台机器上采用相同的配置
100.2.12.85 master
100.2.12.13 slave1
100.2.12.97 slave2
100.2.12.94 slave3
3、可以新建一个用户,用来安装hadoop,比如新建用户hadoop,也可以再root进行分布式部署。
useradd hadoop
passwd hadoop
4、配置ssh免登陆
这一块折腾了一会,因为不明白公钥、私钥的原理,如果想深入了解一下可以参考一个文章,http://www.blogjava.net/yxhxj2006/archive/2012/10/15/389547.html;
a、ssh-keygen -t dsa -P ''
b、cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
如果想让多台机器互相免密码登陆,即maser登陆slave1,slave1登陆master,只要把各自的id_rsa.pub 追加到对方的authorized_keys即可。把mster的公钥追加到slave1的keys种,slave1的公钥追加到maset的keys中,这样就master与slave1就可以免密码登陆了。以此类推配置其它节点。
5、部署hadoop
a、tar解压hadoop压缩包,mv重命名伟hadoop。
b、修改配置文件
修改conf/Hadoop-env.sh,配置java_home
修改conf/core-site.xml,创建文件夹/home/hadoop/tempdir
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tempdir</value>
</property>
</configuration>
c、修改hdfs-site.xml配置
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
d、修改mapred-site.xml配置
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
e、配置masters
master
f、配置slave
slave1
slave2
slave3
到此hadoop需要的配置已经完成了,用scp命令将hadoop发送到slave1~slave3。
发送完成后进行格式化
hadoop namenode –format
格式化成功后,start-all.sh 启动hadoop集群,通过jps查看启动状态。
你可以通过命令
Hadoop dfsadmin –report
查看集群状态
或者通过http://master:50070;http://master:50030查看集群状态。
二、Hive的安装
Hive的安装相对比较简单,只需修改几个配置就行。Hive自动了元数据库,但使用不方便,因为自带的数据库如果进入hive shell的路径不一致,就看不到对应的表,如从/home进入hive建的表,从/home/hadoop,路径进入hive则看不到刚才建的表,所有建议单独安装数据库作为元数据库,我安装了mysq数据库,作为Hive的元数据库。
1、安装myslq,最好采用yum或apt-get的方式安装,不同的平台的采取不同方式,这样可以省去很多麻烦,避免了解决依赖包的问题。
安装完myslq之后,需要做一点配置。
设置密码:
MySQL在刚刚被安装的时候,它的root用户是没有被设置密码的。首先来设置MySQL的root密码。
[root@sample ~]# mysql -u root ← 用root用户登录MySQL服务器
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>grant all on mysql.* to 'root'@'localhost' identified by 'password';
之后 就可以通过密码登录mysql了。
设置远程访问:
首先,在MySQL服务器上本地登录,使用下面的命令登录:
# mysql-u root -p
然后,使用权限管理命令将所有表的所有权限授予用户,下面继续以root为例(需要注意的是用户名root,被授权主机%,登录密码password需要被单引号括起来):
mysql> grant all privileges on *.* to 'root’@'%’ identified by 'password';
2、tar 解压hive压缩包
修改配置文件
hive的配置文件放在HIVE_HOME/conf目录下,我们需要修改hive-env.sh和hive-site.xml这两个文件。
ls之 后发现并没有这两个文件,但是有hive-env.sh.template,hive-default.xml.template,我们须复制这两个文 件,并分别命名为hive-env.sh,hive-site.xml。
一般还有一个hive-default.xml文件,同样由hive- default.xml.template复制而来。hive-default.xml是默认配置,hive-site.xml是个性化配置,将会覆盖 hive-default.xml配置。
a、修改hive-env.sh配置文件
将export HADOOP_HEAPSIZE=1024前面的‘#’去掉,当然可以根据自己的环境对这个默认的1024进行优化;
将export HADOOP_HOME前面的‘#’号去掉,并让它指向您所安装hadoop的目录,我的/home/hadoop/hadoop;
将export HIVE_CONF_DIR=/home/hadoop/hive/conf,并且把‘#’号去掉;
将export HIVE_AUX_JARS_PATH=/home/hadoop/hive/lib,并且把‘#’号去掉。
b、修改hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>#hdfs下的目录
<description>location of default database for the warehouse</description>
</property>
#存放hive相关日志的目录
<property>
<name>hive.querylog.location</name>
<value>/usr/hadoop/hive/log</value>#需要自己手动创建对应目录
<description>
Location of Hive run time structured log file
</description>
</property>
c、在hive-site.xml下配置mysql元数据库
<configuration>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.11.157:3306/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mysql</value>
</property>
</configuration>
根据实际情况做对应的修改。并下载mysql的驱动复制到hive/lib中。
到此hive的安装配置已完成,可以进入hive查看一下。
hive
show tables;
三、Hbase安装
Hbase需要安装zookeeper,Hbase自带了Zookeeper,单独安装zookeeper和使用自带的我都十了一下,如果想自己安装可以安装zookeeper-3.4.5,安装zookeeper可以参考http://blog.sina.com.cn/s/blog_7c5a82970101trxu.html。
1、tar解压hbase安装包
2、配置hbase
a、/conf/hbase-env.sh
export JAVA_HOME=
export HBASE_MANAGES_ZK=true (可以启用hbase自带的zookeeper,这样也不用单独安装zookeeper了,如单独安装了,配为false)
b、conf/hbase-site.xml
该配置采用了hbase自带的zookeeper
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave1,slave2,slave3</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>
</description>
</property>
</configuration>
单独安装的zookeeper采用如下配置
regionservers<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2,slave3</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>
/home/hadoop/zk</value>
<description>
</description>
</property>
</configuration>注意hbase.rootdir配置需要与hadoop的配置一致。
c、conf/regionservers
slave1
slave2
slave3
到此hbase的配置已完成,用scp命令复制到slave1~salve3中。
启动hbase,
start-hbase.sh
用jps观看是否启动正常,或通过浏览器查看,master:60010。
总结:
整个部署其实没什么难度,就是配置稍微多一些,可能一个地方漏掉,就会出现莫名其妙的问题。只要选对了对应的版本,一般不会有什么问题。
我用java的api操作hbase数据库时,会报一个错,但不影响运行,在hbase shell下是可以正常操作的,不知道是版本兼容问题,还是什么问题,也没找到什么原因,我把异常放到这,希望有解决此问题的,提供一下解决方式,虽说不影响运行,但看着还是比较恶心,呵呵,异常如下:
14/05/22 13:52:49 INFO zookeeper.ClientCnxn: Session establishment complete on server slave3/100.2.12.94:2181, sessionid = 0x346227c54700001, negotiated timeout = 90000
14/05/22 13:52:51 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:52 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:53 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:54 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 3 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:55 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 4 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:56 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 5 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:57 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 6 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:58 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 7 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:59 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 8 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:53:00 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:53:00 WARN util.DynamicClassLoader: Failed to identify the fs of dir hdfs://localhost:9000/hbase/lib, ignored
java.net.ConnectException: Call to localhost/127.0.0.1:9000 failed on connection exception: java.net.ConnectException: Connection refused
at org.apache.hadoop.ipc.Client.wrapException(Client.java:1142)
at org.apache.hadoop.ipc.Client.call(Client.java:1118)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
at com.sun.proxy.$Proxy5.getProtocolVersion(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:62)
at com.sun.proxy.$Proxy5.getProtocolVersion(Unknown Source)
at org.apache.hadoop.ipc.RPC.checkVersion(RPC.java:422)
at org.apache.hadoop.hdfs.DFSClient.createNamenode(DFSClient.java:183)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:281)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:245)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:100)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1446)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:67)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1464)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:263)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:187)
at org.apache.hadoop.hbase.util.DynamicClassLoader.<init>(DynamicClassLoader.java:104)
at org.apache.hadoop.hbase.protobuf.ProtobufUtil.<clinit>(ProtobufUtil.java:201)
at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64)
at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:69)
at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:857)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:662)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:414)
at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:393)
at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:274)
at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:192)
at com.inspur.hbase.HbaseTest12.createTable(HbaseTest12.java:61)
at com.inspur.hbase.HbaseTest12.main(HbaseTest12.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
Caused by: java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:599)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:511)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:481)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:457)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:583)
at org.apache.hadoop.ipc.Client$Connection.access$2200(Client.java:205)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1249)
at org.apache.hadoop.ipc.Client.call(Client.java:1093)
... 41 more
前期搭建的伪分布式,采用的版本分别是:hadoop-1.2.1+apache-hive-0.13.0+hbase-0.98.1,这个版本组合经过测试可以正常使用,所有搭建分布式的环境也采用了这些版本。
环境规划
机器名 IP 角色
master 100.2.12.85 nameNode,master,jobtracker
slave1 100.2.12.13 Datanode,slave,tasktracker
slave2 100.2.12.97 Datanode,slave,tasktracker
slave3 100.2.12.94 Datanode,slave,tasktracker
一、Hadoop安装
1、根据规划对各个机器设置hostname
2、配置/etc/hosts,每台机器上采用相同的配置
100.2.12.85 master
100.2.12.13 slave1
100.2.12.97 slave2
100.2.12.94 slave3
3、可以新建一个用户,用来安装hadoop,比如新建用户hadoop,也可以再root进行分布式部署。
useradd hadoop
passwd hadoop
4、配置ssh免登陆
这一块折腾了一会,因为不明白公钥、私钥的原理,如果想深入了解一下可以参考一个文章,http://www.blogjava.net/yxhxj2006/archive/2012/10/15/389547.html;
a、ssh-keygen -t dsa -P ''
b、cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
如果想让多台机器互相免密码登陆,即maser登陆slave1,slave1登陆master,只要把各自的id_rsa.pub 追加到对方的authorized_keys即可。把mster的公钥追加到slave1的keys种,slave1的公钥追加到maset的keys中,这样就master与slave1就可以免密码登陆了。以此类推配置其它节点。
5、部署hadoop
a、tar解压hadoop压缩包,mv重命名伟hadoop。
b、修改配置文件
修改conf/Hadoop-env.sh,配置java_home
修改conf/core-site.xml,创建文件夹/home/hadoop/tempdir
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tempdir</value>
</property>
</configuration>
c、修改hdfs-site.xml配置
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
d、修改mapred-site.xml配置
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
e、配置masters
master
f、配置slave
slave1
slave2
slave3
到此hadoop需要的配置已经完成了,用scp命令将hadoop发送到slave1~slave3。
发送完成后进行格式化
hadoop namenode –format
格式化成功后,start-all.sh 启动hadoop集群,通过jps查看启动状态。
你可以通过命令
Hadoop dfsadmin –report
查看集群状态
或者通过http://master:50070;http://master:50030查看集群状态。
二、Hive的安装
Hive的安装相对比较简单,只需修改几个配置就行。Hive自动了元数据库,但使用不方便,因为自带的数据库如果进入hive shell的路径不一致,就看不到对应的表,如从/home进入hive建的表,从/home/hadoop,路径进入hive则看不到刚才建的表,所有建议单独安装数据库作为元数据库,我安装了mysq数据库,作为Hive的元数据库。
1、安装myslq,最好采用yum或apt-get的方式安装,不同的平台的采取不同方式,这样可以省去很多麻烦,避免了解决依赖包的问题。
安装完myslq之后,需要做一点配置。
设置密码:
MySQL在刚刚被安装的时候,它的root用户是没有被设置密码的。首先来设置MySQL的root密码。
[root@sample ~]# mysql -u root ← 用root用户登录MySQL服务器
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>grant all on mysql.* to 'root'@'localhost' identified by 'password';
之后 就可以通过密码登录mysql了。
设置远程访问:
首先,在MySQL服务器上本地登录,使用下面的命令登录:
# mysql-u root -p
然后,使用权限管理命令将所有表的所有权限授予用户,下面继续以root为例(需要注意的是用户名root,被授权主机%,登录密码password需要被单引号括起来):
mysql> grant all privileges on *.* to 'root’@'%’ identified by 'password';
2、tar 解压hive压缩包
修改配置文件
hive的配置文件放在HIVE_HOME/conf目录下,我们需要修改hive-env.sh和hive-site.xml这两个文件。
ls之 后发现并没有这两个文件,但是有hive-env.sh.template,hive-default.xml.template,我们须复制这两个文 件,并分别命名为hive-env.sh,hive-site.xml。
一般还有一个hive-default.xml文件,同样由hive- default.xml.template复制而来。hive-default.xml是默认配置,hive-site.xml是个性化配置,将会覆盖 hive-default.xml配置。
a、修改hive-env.sh配置文件
将export HADOOP_HEAPSIZE=1024前面的‘#’去掉,当然可以根据自己的环境对这个默认的1024进行优化;
将export HADOOP_HOME前面的‘#’号去掉,并让它指向您所安装hadoop的目录,我的/home/hadoop/hadoop;
将export HIVE_CONF_DIR=/home/hadoop/hive/conf,并且把‘#’号去掉;
将export HIVE_AUX_JARS_PATH=/home/hadoop/hive/lib,并且把‘#’号去掉。
b、修改hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>#hdfs下的目录
<description>location of default database for the warehouse</description>
</property>
#存放hive相关日志的目录
<property>
<name>hive.querylog.location</name>
<value>/usr/hadoop/hive/log</value>#需要自己手动创建对应目录
<description>
Location of Hive run time structured log file
</description>
</property>
c、在hive-site.xml下配置mysql元数据库
<configuration>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.11.157:3306/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mysql</value>
</property>
</configuration>
根据实际情况做对应的修改。并下载mysql的驱动复制到hive/lib中。
到此hive的安装配置已完成,可以进入hive查看一下。
hive
show tables;
三、Hbase安装
Hbase需要安装zookeeper,Hbase自带了Zookeeper,单独安装zookeeper和使用自带的我都十了一下,如果想自己安装可以安装zookeeper-3.4.5,安装zookeeper可以参考http://blog.sina.com.cn/s/blog_7c5a82970101trxu.html。
1、tar解压hbase安装包
2、配置hbase
a、/conf/hbase-env.sh
export JAVA_HOME=
export HBASE_MANAGES_ZK=true (可以启用hbase自带的zookeeper,这样也不用单独安装zookeeper了,如单独安装了,配为false)
b、conf/hbase-site.xml
该配置采用了hbase自带的zookeeper
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave1,slave2,slave3</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>
</description>
</property>
</configuration>
单独安装的zookeeper采用如下配置
regionservers<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2,slave3</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>
/home/hadoop/zk</value>
<description>
</description>
</property>
</configuration>注意hbase.rootdir配置需要与hadoop的配置一致。
c、conf/regionservers
slave1
slave2
slave3
到此hbase的配置已完成,用scp命令复制到slave1~salve3中。
启动hbase,
start-hbase.sh
用jps观看是否启动正常,或通过浏览器查看,master:60010。
总结:
整个部署其实没什么难度,就是配置稍微多一些,可能一个地方漏掉,就会出现莫名其妙的问题。只要选对了对应的版本,一般不会有什么问题。
我用java的api操作hbase数据库时,会报一个错,但不影响运行,在hbase shell下是可以正常操作的,不知道是版本兼容问题,还是什么问题,也没找到什么原因,我把异常放到这,希望有解决此问题的,提供一下解决方式,虽说不影响运行,但看着还是比较恶心,呵呵,异常如下:
14/05/22 13:52:49 INFO zookeeper.ClientCnxn: Session establishment complete on server slave3/100.2.12.94:2181, sessionid = 0x346227c54700001, negotiated timeout = 90000
14/05/22 13:52:51 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:52 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:53 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:54 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 3 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:55 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 4 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:56 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 5 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:57 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 6 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:58 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 7 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:52:59 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 8 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:53:00 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
14/05/22 13:53:00 WARN util.DynamicClassLoader: Failed to identify the fs of dir hdfs://localhost:9000/hbase/lib, ignored
java.net.ConnectException: Call to localhost/127.0.0.1:9000 failed on connection exception: java.net.ConnectException: Connection refused
at org.apache.hadoop.ipc.Client.wrapException(Client.java:1142)
at org.apache.hadoop.ipc.Client.call(Client.java:1118)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
at com.sun.proxy.$Proxy5.getProtocolVersion(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:62)
at com.sun.proxy.$Proxy5.getProtocolVersion(Unknown Source)
at org.apache.hadoop.ipc.RPC.checkVersion(RPC.java:422)
at org.apache.hadoop.hdfs.DFSClient.createNamenode(DFSClient.java:183)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:281)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:245)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:100)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1446)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:67)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1464)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:263)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:187)
at org.apache.hadoop.hbase.util.DynamicClassLoader.<init>(DynamicClassLoader.java:104)
at org.apache.hadoop.hbase.protobuf.ProtobufUtil.<clinit>(ProtobufUtil.java:201)
at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64)
at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:69)
at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:857)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:662)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:414)
at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:393)
at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:274)
at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:192)
at com.inspur.hbase.HbaseTest12.createTable(HbaseTest12.java:61)
at com.inspur.hbase.HbaseTest12.main(HbaseTest12.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
Caused by: java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:599)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:511)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:481)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:457)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:583)
at org.apache.hadoop.ipc.Client$Connection.access$2200(Client.java:205)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1249)
at org.apache.hadoop.ipc.Client.call(Client.java:1093)
... 41 more
相关推荐
3. **大数据存储系统**:面试官可能会询问HBase、Cassandra、Hive等NoSQL数据库和数据仓库的特性和应用场景,以及它们与关系型数据库的区别。 4. **大数据实时处理**:Kafka作为消息队列,Flink和Storm用于实时流...
基于万能逼近原理的自适应模糊控制算法在多自由度AUV运动控制中的应用与抗干扰补偿Simulink仿真研究,自适应模糊控制算法的万能逼近原理与多自由度AUV运动控制的抗干扰补偿技术——基于Simulink的仿真研究,万能逼近原理自适应模糊控制算法的多自由度AUV运动控制抗干扰补偿simulink仿真 ,核心关键词:万能逼近原理; 自适应模糊控制算法; 多自由度AUV运动控制; 抗干扰补偿; Simulink仿真。,基于万能逼近的模糊控制算法多自由度AUV抗干扰补偿Simulink仿真
deepseek最新资讯、配置方法、使用技巧,持续更新中
deepseek最新资讯、配置方法、使用技巧,持续更新中
结合扩展卡尔曼滤波与滑模观测器的策略:优化电角度估计,反电势波形逼近完美正弦波,结合扩展卡尔曼滤波与滑模观测器的反电势波形优化:正弦波形展现近乎完美精度,电角度估算与实际应用差异微小,扩展卡尔曼滤波与滑模观测器的结合,反电势波形近乎完美的正弦波形,观测器估算转子电角度与实际电角度相差0.3弧度左右,转速跟随效果较好。 ,核心关键词:扩展卡尔曼滤波; 滑模观测器; 反电势波形; 转子电角度估算; 转速跟随效果。,卡尔曼滑模观测器:优化正弦波转子角度与转速估算
毕业设计_基于springboot+vue的**学生公寓管理系统**【源码+sql+可运行】【**50217**】.zip 全部代码均可运行,亲测可用,尽我所能,为你服务; 1.代码压缩包内容 代码:springboo后端代码+vue前端页面代码; 脚本:数据库SQL脚本 效果图:运行结果请看资源详情效果图 2.环境准备: - JDK1.8+ - maven3.6+ - nodejs14+ - mysql5.6+ - redis 3.技术栈 - 后台:springboot+mybatisPlus+Shiro - 前台:vue+iview+Vuex+Axios - 开发工具: idea、navicate 4.功能列表 - 系统设置:用户管理、角色管理、资源管理、系统日志 - **业务管理:业务管理:公寓信息、房间信息、入住记录、学生信息** 3.运行步骤: 步骤一:修改数据库连接信息(ip、port修改) 步骤二:找到启动类xxxApplication启动 4.若不会,可私信博主!!!
1、文件内容:xorg-x11-server-source-1.20.4-29.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/xorg-x11-server-source-1.20.4-29.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
1、文件内容:yum-plugin-ps-1.1.31-54.el7_8.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/yum-plugin-ps-1.1.31-54.el7_8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
基于模型预测控制(MPC)的无人船与无人车编队一致性协同控制研究(附原文献),基于模型预测控制(MPC)的无人船与无人车编队一致性协同控制研究(附原文献),无人船编队 无人车编队 MPC 模型预测控制 多智能体协同控制 一致性 MATLAB 无人车 USV 带原文献 ,无人船编队; 无人车编队; MPC 模型预测控制; 多智能体协同控制; 一致性; MATLAB; USV; 原文献,无人系统协同控制:MPC模型预测控制下的多智能体编队与一致性研究(原文献支撑)
4套中级通信工程师综合真题及答案(2019,2020,2021,2023),适用于需要考中级通信工程师的人群
deepseek最新资讯,配置方法,使用技巧,持续更新中
基于matlab的锁相环PLL相位噪声拟合仿真代码集合:多个版本建模与仿真,高质量的锁相环PLL仿真代码集合:Matlab与Simulink建模研究,[1]锁相环 PLL 几个版本的matlab相位噪声拟合仿真代码,质量杠杠的,都是好东西 [2]锁相环matlab建模稳定性仿真,好几个版本 [3]锁相环2.4G小数分频 simulink建模仿真 ,PLL; Matlab相位噪声拟合仿真; Matlab建模稳定性仿真; 锁相环2.4G小数分频Simulink建模仿真,MATLAB仿真系列:锁相环PLL及分频器建模仿真
exceptionLogs.zip
基于光伏微网的经济性与并网负荷波动率双目标优化调度策略:蓄电池与V2G协同管理策略仿真研究,MATLAB下光储充微网结合电动汽车V2G的多目标协同调度策略研究:经济性与并网负荷波动性的对比分析,MATLAB代码:考虑V2G的光储充一体化微网多目标优化调度策略 关键词:光储充微网 电电汽车V2G 多目标优化 蓄电池优化 调度 参考文档:《光伏微网下考虑V2G补偿蓄电池容量的双目标优化调度策略》,已经投稿EI会议,中文说明文档可联系我咨询 仿真平台:MATLAB 平台 优势:代码注释详实,适合参考学习,相关成果已经采用,程序非常精品,请仔细辨识 主要内容:过建立光伏微网中以经济性和并网负荷波动率为双目标的蓄电池和V2G的协同调度模型。 采用粒子群算法,对电网、微网调度中心和电动汽车用户三方在无、无序、转移和调度V2G电动汽车负荷四种运行模式下的经济和安全影响进行对比。 最后,根据算例分析,求解四种模式下两级负荷曲线及经济收益表。 对比分析得出,引入V2G可以替代部分容量的蓄电池,使光伏微网在负荷峰谷平抑、三方经济和安全等方面进一步优化。 求解采用的是PSO算法(粒子群算法),求解效果极
javascript 动态网页设计期末大作业(自己手写的,高分期末作业),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期末大作业(自己手写的,高分期末作业)javascript 动态网页设计期
混合智能体系统编队控制:分布式优化与15异构混合阶的挑战,异构混合阶智能体系统编队控制的分布式优化策略研究,15异构混合阶多智能体系统编队控制的分布式优化(无参考文献) ,核心关键词:15异构混合阶; 多智能体系统; 编队控制; 分布式优化; 无参考文献。,15混合阶多智能体系统编队分布式优化控制
javascript 动态网页设计期末大作业(自己手写的,很适合期末作业),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascript 动态网页设计期末大作业(自己手写的,很适合期末作业)javascrip
X光安检OPIXray数据集已经转换为VOC格式,可直接转换为为YOLO
DataX--Web:图形化界面简化大数据任务管理_datax-web