安装单机habase报错,好像是hbase zookeeper 单机问题,单机还需要hbase zookeeper 单机么

zookeeper&单机伪集群配置
zookeeper 的安装基本上可以按照
http://hadoop.apache.org/zookeeper/docs/current/
zookeeperStarted.html
这个页面上的步骤完成安装,这里主要介绍下部署一个集群的步骤,因为这个官方页面似乎讲得并不是非常详细(Running
Replicated Zookeeper)。
由于手头机器不足,所以在一台机器上部署了3个server,如果你手头也比较紧,也可以这么做。那么我建了3个文件夹,如下
server1 server2 server3
然后每个文件夹里面解压一个zookeeper的下载包,并且还建了几个文件夹,总体结构如下,最后那个是下载过来压缩包的解压文件
data dataLog logs zookeeper-3.3.2
那么首先进入data目录,创建一个myid的文件,里面写入一个数字,比如我这个是server1,那么就写一个1,server2对应myid文件就写入2,server3对应myid文件就写个3
后进入zookeeper-3.3.2/conf目录,那么如果是刚下过来,会有3个文件,configuration.xml,
log4j.properties,zoo_sample.cfg,这3个文件我们首先要做的就是在这个目录创建一个zoo.cfg的配置文件,当然你可
以把zoo_sample.cfg文件改成zoo.cfg,配置的内容如下所示:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=xxxx/zookeeper/server1/data
dataLogDir=xxx/zookeeper/server1/dataLog
clientPort=2181
server.1=127.0.0.1:
server.2=127.0.0.1:
server.3=127.0.0.1:
红的几个配置应该官网讲得很清楚了,只是需要注意的是clientPort这个端口如果你是在1台机器上部署多个server,那么每台机器都要不同的
clientPort,比如我server1是2181,server2是2182,server3是2183,dataDir和dataLogDir也
需要区分下。
最后几行唯一需要注意的地方就 是
server.X 这个数字就是对应
data/myid中的数字。你在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配
server.1,server.2,server.3就OK了。因为在同一台机器上,后面连着的2个端口3个server都不要一样,否则端口冲突,其
中第一个端口用来集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。
入zookeeper-3.3.2/bin 目录中,./zkServer.sh
start启动一个server,这时会报大量错误?其实没什么关系,因为现在集群只起了1台server,zookeeper服务器端起来会根据
zoo.cfg的服务器列表发起选举leader的请求,因为连不上其他机器而报错,那么当我们起第二个zookeeper实例后,leader将会被选
出,从而一致性服务开始可以使用,这是因为3台机器只要有2台可用就可以选出leader并且对外提供服务(2n+1台机器,可以容n台机器挂掉)。
接 下来就可以使用了,我们可以先通过
zookeeper自带的客户端交互程序来简单感受下zookeeper到底做一些什么事情。进入zookeeper-3.3.2/bin(3个
server中任意一个)下,./zkCli.sh &server
127.0.0.1:2182,我连的是开着2182端口的机器。
那么,首先我们随便打个命令,因为zookeeper不认识,他会给出命令的help,如下图
<img src="/blog7style/images/common/sg_trans.gif" real_src ="http://www.blogjava.net/images/blogjava_net/bucketli/dddd.jpg" ALT="" STYLE="margin-top: 0 margin-right: 0 margin-bottom: 0 margin-left: 0 padding-top: 0 padding-right: 0 padding-bottom: 0 padding-left: 0 border-top-style: border-right-style: border-bottom-style: border-left-style: border-width: border-color:"
TITLE="zookeeper&单机伪集群配置" />
ls(查看当前节点数据),
ls2(查看当前节点数据并能看到更新次数等数据) ,
create(创建一个节点) ,
get(得到一个节点,包含数据和更新次数等数据),
set(修改节点)
delete(删除一个节点)
通过上述命令实践,我们可以发现,zookeeper使用了一个类似文件系统的树结构,数据可以挂在某个节点上,可以对这个节点进行删改。另外我们还发现,当改动一个节点的时候,集群中活着的机器都会更新到一致的数据。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。4201人阅读
hadoop(37)
master: java.net.BindException: Address already in use
master:&&&&&&&& at sun.nio.ch.Net.bind(Native Method)
master:&&&&&&&& at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:124)
master:&&&&&&&& at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
master:&&&&&&&& at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:52)
master:&&&&&&&& at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:111)
master:&&&&&&&& at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:130)
master:&&&&&&&& at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.runZKServer(HQuorumPeer.java:73)
master:&&&&&&&& at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.main(HQuorumPeer.java:63)
报错的原因是 zookeeper已经启动了。
export HBASE_MANAGES_ZK=true
这个参数表示启动hbase之前自动启动zk
解决的办法有2种:
1.启动hbase的之前kill掉所有的 zk进程 让hbase启动zk
2.将参数HBASE_MANAGES_ZK 改成false
在hbase之前手动启动zk.
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:724731次
积分:8424
积分:8424
排名:第1322名
原创:183篇
转载:84篇
评论:50条
(2)(2)(2)(3)(1)(1)(6)(1)(3)(1)(4)(9)(1)(3)(17)(11)(4)(5)(9)(6)(5)(7)(6)(13)(8)(12)(22)(18)(10)(2)(13)(3)(18)(9)(22)(10)1&&& 基本信息
1.1&&&& 软件信息
hadoop-2.6.0
zookeeper-3.4.6
hbase-0.98.9-hadoop2
(以下示例中使用的操作系统是Centos 6.5,请将下载的3个tar包分别解压并放置在/usr/local/目录下)
(Hbase包中lib里可以看到zookeeper的jar包,从文件名可以确定使用的zookeeper版本)
1.2&&&& 集群组成:
Server Name
Hadoop Cluster
Zookeeper Ensemble
HBase Cluster
hadoopnamenode
Name node &&Resource manager
hadoop2ndnamenode
Secondary name node
hadoopdatanode1
Data node &&Node manager
Region server
hadoopdatanode2
Data node &&Node manager
Region server
hadoopdatanode3
Data node &&Node manager
Region server
2&&& Hadoop集群
2.1&&&& 配置
2.1.1&&&&& core-site.xml
&configuration&
&property&
&name&fs.defaultFS&/name&
&value&hdfs://hadoopnamenode:9000&/value&
&/property&
&/configuration&&
2.1.2&&&&& hdfs-site.xml
&configuration&
&property&
&name&dfs.namenode.name.dir&/name&
&value&file:/root/hadoopdata/namenode&/value&
&/property&
&property&
&name&dfs.datanode.data.dir&/name&
&value&file:/root/hadoopdata/datanode&/value&
&/property&
&property&
&name&dfs.namenode.secondary.http-address&/name&
&value&hadoop2ndnamenode:9001&/value&
&/property&
&/configuration&&
2.1.3&&&&& mapred-site.xml
&configuration&
&property&
&name&mapreduce.framework.name&/name&
&value&yarn&/value&
&/property&
&/configuration&&
2.1.4&&&&& yarn-site.xml
&configuration&
&property&
&name&yarn.nodemanager.aux-services&/name&
&value&mapreduce_shuffle&/value&
&/property&
&property&
&name&yarn.nodemanager.aux-services.mapreduce.shuffle.class&/name&
&value&org.apache.hadoop.mapred.ShuffleHandler&/value&
&/property&
&property&
&name&yarn.resourcemanager.resource-tracker.address&/name&
&value&hadoopnamenode:8025&/value&
&/property&
&property&
&name&yarn.resourcemanager.scheduler.address&/name&
&value&hadoopnamenode:8030&/value&
&/property&
&property&
&name&yarn.resourcemanager.address&/name&
&value&hadoopnamenode:8040&/value&
&/property&
&/configuration&
2.1.5&&&&& slaves
hadoopdatanode1
hadoopdatanode2
hadoopdatanode3
2.1.6&&&&& /etc/hosts
153.65.170.45
hadoopnamenode
153.65.171.174
hadoop2ndnamenode
153.65.171.20
hadoopdatanode1
153.65.170.204
hadoopdatanode2
153.65.170.85
hadoopdatanode3
2.1.7&&&&& ~/.bashrc
与上一篇博客介绍的Hadoop 1类似,为了方便起见,修改.bashrc设置环境变量,注意sbin最好也要加到path中:
export HADOOP_PREFIX=/usr/local/hadoop-2.6.0
export HADOOP_MAPRED_PREFIX=$HADOOP_PREFIX
export HADOOP_HDFS_PREFIX=$HADOOP_PREFIX
export HADOOP_YARN_PREFIX=$HADOOP_PREFIX
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
2.1.8&&&&& 分发到集群的其它机器
把hadoop-2.6.0文件夹连同修改后的配置文件以及hosts文件,通过scp拷贝到其它四台机器上。
(并没有要求说所有的机器上都使用一样的配置文件,比如namenode的hdfs-site.xml应该是不需要dfs.datanode.data.dir配置,而datanode的hdfs-site.xml应该不需要dfs.namenode.name.dir配置。而也只有namenode上需要配置slaves文件。这里是为了简单起见,我们让所有机器上都保持一样的配置)
2.1.9&&&&& 设置ssh免密码访问
参见上一篇博客。
2.1.10&& 一些配置参数的解释
Hadoop 2中没有mapred.job.tracker了,新框架中已改为yarn-site.xml 中的 resouceManager 及 nodeManager具体配置项,新框架中历史 job 的查询已从Job tracker剥离,归入单独的mapreduce.jobtracker.jobhistory 相关配置。
yarn.resourcemanager.address---NodeManager 与 RM 通信的接口地址
yarn.resourcemanager.scheduler.address---NodeManger 需要知道 RM 主机的 scheduler 调度服务接口地址
yarn.resourcemanager.resource-tracker.address---NodeManager 需要向 RM 报告任务运行状态供 Resouce 跟踪,因此 NodeManager 节点主机需要知道 RM 主机的 tracker 接口地址
yarn.resourcemanager.webapp.address---各个 task 的资源调度及运行状况通过通过该 web 界面访问
2.2&&&& 创建目录
在namenode上创建: /root/hadoopdata/namenode
在3台datanode上创建: /root/hadoopdata/datanode
(也可以让hadoop自动创建)&
2.3&&&& 启动/关闭
start-dfs.sh,执行之后,使用jps命令查看java进程情况:
hadoopnamenode上有namenode进程,
hadoop2ndnamenode上有secondarynamenode进程,
hadoopdatanode1, hadoopdatanode2, hadoopdatanode3上有datanode进程
start-yarn.sh,执行之后的java进程情况:
hadoopnamenode上有namenode, resourcemanager进程,
hadoop2ndnamenode上有secondarynamenode进程,
hadoopdatanode1, hadoopdatanode2, hadoopdatanode3上有datanode, nodemanager进程
关闭的命令对应的是stop-dfs.sh, stop-yarn.sh
2.4&&&& 测试
hdfs dfsadmin -report //查看hdfs的一些基本信息
yarn node &list //查看yarn的一些基本信息
可以使用hadoop的share目录下的一些mapreduce示例程序进行测试,比如wordcount:
先使用copyFromLocal命令(后续有介绍用法)把一个本地文本文件放到hdfs的/book目录下,然后执行:
hadoop jar /usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount&& /book&& /out2
即对/book目录下的书进行单词统计,然后输出到/out2目录。
可以登录web界面检查hadoop是否运行正常:
hdfs管理界面同hadoop 1: http://hadoopnamenode:50070/&
yarn的管理界面不再是原来的50030端口,而是
2.5&&&& 注意事项
若namenode上的core-site.xml中的fs.defaultFS缺失,则启动时会报错。
若各机器上的yarn-site.xml中的yarn.resourcemanager.resource-tracker.address缺失,虽然resourcemanager与nodemanager进程能够正常启动,但是在执行yarn node -list会出现node数量为0的情况。
若各机器上的yarn-site.xml中的yarn.resourcemanager.scheduler.address或yarn.resourcemanager.address缺失,则在运行job时,会卡在INFO mapreduce.Job: Job job_9_0001 running in uber mode : false
2.6&&&& 几个Hadoop fs shell命令
hadoop fs -ls / ---列出hdfs根目录下的文件、目录
hadoop fs -ls /out2 ---列出out2目录下的文件、目录
hadoop fs -lsr / ---递归显示文件
hadoop fs -cat /out2/part-r-00000 ---打出文件内容
hadoop dfs -copyFromLocal& &local_FS_filename& &target_on_HDFS&
hadoop fs -du hdfs://namenodehost/user/hadoop ---查看目录大小
hadoop fs -rm /user/hadoop/file ---删除文件或空目录
hadoop fs -rmr /user/hadoop/dir ---删除文件或目录,递归之意
hafoop fs -tail /user/hadoop/sales.dat ---查看文件内容
dfs was deprecated in favor of "fs" command.
所以原来的hadoop dfs -copyFromLocal& &local_FS_filename& &target_on_HDFS&,现在的写法是
hadoop fs -copyFromLocal& &local_FS_filename& &target_on_HDFS&
hadoop fs -copyFromLocal /root/Downloads/small/war_and_peace.txt /test 这样生成的test是文件,而不是文件夹
所以一般hadoop fs -copyFromLocal /root/Downloads/small& /test,这样small下的文件会被copy到test文件夹下
又或者hadoop fs -copyFromLocal /root/Downloads/small/war_and_peace.txt /test4/,注意最后的/,前提是要用hadoop fs -mkdir先创建出test4目录
3&&& Zookeeper集群
3.1&&&& 配置
3.1.1&&&&& zoo.cfg
tickTime=2000
dataDir=/root/zookeeperdata
clientPort=2181
initLimit=5
syncLimit=2
server.1=hadoopnamenode:
server.2=hadoop2ndnamenode:
server.3=hadoopdatanode1:
3.1.2&&&&& 分发到集群的其它机器
把zookeeper文件夹连同修改后的配置文件通过scp拷贝到另外两台机器(hadoop2ndnamenode, hadoopdatanode)上。
3.1.3&&&&& 设置myid
hadoopnameonde上echo&1& & /root/zookeeperdata/myid
hadoop2ndnamenode上echo &2& & /root/zookeeperdata/myid
hadoopdatanode上echo&3& & /root/zookeeperdata/myid
3.1.4&&&&& 一些配置参数的解释
tickTime :心跳时间,单位毫秒。同时tickTime又是zookeeper中的基本单位,比如后面的initLimit=5就是指5个tickTime时间,在这里是10秒。&
dataDir :存储数据信息的本地目录。&
3.2&&&& 创建目录
在hadoopnamenode, hadoop2ndnamenode, hadoopdatanode1上创建dataDir中配置的目录/root/zookeeperdata。
3.3&&&& 启动/关闭
{ZOOKEEPER_HOME} /bin/zkServer.sh start
启动和关闭命令必须到zookeeper集群的每个机器上,没有像start-dfs.sh那样的命令可以一下子把整个集群启动。
关闭:{ZOOKEEPER_HOME} /bin/zkServer.sh stop
3.4&&&& 测试
{ZOOKEEPER_HOME} /bin/zkServer.sh status
以下是结果示例,可以看到各机器的角色是follower还是leader。
[root@hadoopnamenode zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
[root@hadoop2ndnamenode zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader
[root@hadoopdatanode1 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
3.5&&&& 注意事项
对于一个包含3台server的Zookeeper集群,最多容许关闭一台(如果被关闭的是leader,则会重新选举出一个)。如果关闭两台,则剩下那台虽然进程QuorumPeerMain还在,但zkServer.sh status查看状态则显示Error contacting service. It is probably not running。
对于一个包含5台server的Zookeeper集群,最多容许关闭两台。关闭三台,则剩下两台虽然进程QuorumPeerMain还在,但也显示同样的错误。
(如果这个时候用Java程序去连接Hbase,则会提示:org.apache.hadoop.hbase.ZooKeeperConnectionException: Can't connect to ZooKeeper)
这里面有两个常见的疑问:
1) 当3台server关闭一台时,只剩下两台时,无法形成majority,那么它是如何选举出leader的?
2) 当5台server关闭三台时,剩下两台,为什么不能像1)中一样仍然正常工作?
这两个问题的答案是同一个,Zookeeper中的所谓majority voting机制,其majority是针对原始的server数量,不是指变化后的数量,这个原始的数量即你配置在zoo.cfg中的server个数。&
还有一个常见的问题是为什么推荐使用奇数个Zookeeper server,那是因为3个server与4个server能够提供的可靠性是一样的,3台server的集群允许其中一台server宕机,而4台server的集群也只能容许其中一台server宕机,因为如果两台server宕机,那么剩下两台,对比于原来的4台,2/4不够成大多数。
4&&& Hbase集群
4.1&&&& 配置
4.1.1&&&&& hbase-env.sh
其它不变,export HBASE_MANAGES_ZK=false,这表示不使用hbase自带的zookeeper,而使用外部的zookeeper(这里指我们在上面建的zookeeper)
4.1.2&&&&& hbase-site.xml
&configuration&
&property&
&name&hbase.rootdir&/name&
&value&hdfs://hadoopnamenode:9000/hbase&/value&
&description&The directory shared by region servers.&/description&
&/property&
&property&
&name&hbase.zookeeper.property.clientPort&/name&
&value&2181&/value&
&description&Property from ZooKeeper's config zoo.cfg. The port at which the clients will connect.
&/description&
&/property&
&property&
&name&zookeeper.session.timeout&/name&
&value&120000&/value&
&/property&
&property&
&name&hbase.zookeeper.quorum&/name&
&value&hadoopnamenode,hadoop2ndnamenode,hadoopdatanode1&/value&
&/property&
&property&
&name&hbase.tmp.dir&/name&
&value&/root/hbasedata&/value&
&/property&
&property&
&name&hbase.cluster.distributed&/name&
&value&true&/value&
&/property&
&/configuration&
4.1.3&&&&& regionservers
hadoopdatanode1
hadoopdatanode2
hadoopdatanode3
4.1.4&&&&& 一些配置参数的解释
hbase.zookeeper.property.clientPort:指定zk的连接端口
zookeeper.session.timeout:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的RegionServer接管.
hbase.zookeeper.quorum:默认值是&localhost,列出zookeepr ensemble中的servers
4.2&&&& 启动/关闭
bin/start-hbase.sh
bin/stop-hbase.sh
4.3&&&& 测试
在hadoopnamenode上执行
{HBASE_HOME}/bin/hbase shell
进入shell命令行,通过创建表等操作来检查不是不工作正常。
或者通过一个简单的Java程序来测试:
Configuration config = HBaseConfiguration.create();
config.set( "hbase.zookeeper.quorum", "hadoopnamenode,hadoop2ndnamenode,hadoopdatanode1" );
config.set( "hbase.zookeeper.property.clientport", "2181" );
//config.set("zookeeper.znode.parent", "/hbase-unsecure"); // this is what most people miss :)
HBaseAdmin.checkHBaseAvailable( config );
= new HTable( config, "test" );
= new Scan();
//s.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("name"));
ResultScanner rs = t.getScanner( s );
for ( Result r : rs )
for ( Cell cell : r.rawCells() )
System.out.println( "RowName:" + new String( CellUtil.cloneRow( cell ) ) + " " );
System.out.println( "Timetamp:" + cell.getTimestamp() + " " );
System.out.println( "column Family:" + new String( CellUtil.cloneFamily( cell ) ) + " " );
System.out.println( "row Name:" + new String( CellUtil.cloneQualifier( cell ) ) + " " );
System.out.println( "value:" + new String( CellUtil.cloneValue( cell ) ) + " " );
} finally {
t.close();
System.out.println( "Done!" );
注意,java测试程序所在机器的hosts文件,注意必须有全FDQN(fully qualified domain name,&参见上面linux中的hosts文件),否则有java访问时会提示找不到&
4.4&&&& 注意事项
HBase集群需要依赖于一个Zookeeper ensemble。HBase集群中的所有节点以及要访问HBase的客户端都需要能够访问到该Zookeeper &ensemble。HBase自带了Zookeeper,但为了方便其他应用程序使用Zookeeper,最好使用单独安装的Zookeeper ensemble。
此外,Zookeeper ensemble一般配置为奇数个节点,并且Hadoop集群、Zookeeper ensemble、HBase集群是三个互相独立的集群,并不需要部署在相同的物理节点上,他们之间是通过网络通信的。
需要注意的是,如果要禁止启动hbase自带的zookeeper,那么,不仅仅需要刚才的export HBASE_MANAGES_ZK=false配置,还需要hdfs-site.xml中的hbase.cluster.distributed为true,否则你在启动时会遇到Could not start ZK at requested port of 2181&错误,这是因为hbase尝试启动自带的zookeeper,而我们已经启动了自己安装的那个zookeeper,默认都使用2181端口,所以出错。
还有,有时候会遇到stop-hbase.sh执行很长时间未结束,很可能的原因是你之前把zookeeper关闭了.
最后,Hbase不需要mapreduce,所以只要start-dfs.sh启动hdfs,然后到zookeeper各节点上启动zookeeper,最后再hbase-start.sh启动hbase即可.
阅读(...) 评论()当前位置: >
开始玩hadoop9--最后步骤(简单安装Hbase 和 zookeeper 的入门)
时间: 15:03 来源:网络 作者:永强 阅读:次
这里还是用之前的配置:hadoop 2.6.0 和 ubuntu 14.04&补充一个小技巧:查看进程 ps aux | grep xxx1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。2)ps -A 显示所有程序。&3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。&4)ps -e 此参数的效果和指定&A&参数相同。&5)ps e 列出程序时,显示每个程序所使用的环境变量。&6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。&7)ps -H 显示树状结构,表示程序间的相互关系。&8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。&9)ps s 采用程序信号的&#26684;式显示程序状况。&10)ps S 列出程序时,包括已中断的子程序资料。&11)ps -t  指定终端机编号,并列出属于该终端机的程序的状况。&12)ps u  以用户为主的&#26684;式来显示程序状况。&13)ps x  显示所有程序,不以终端机来区分。ps是显示当前状态处于running的进程,grep表示在这些里搜索,而ps aux是显示所有进程和其状态。$ ps aux | grep amoeba查到amoeba的进程$ kill -s 9 pid今天突然出现了一点小状况,我有一台机器vmware 里的 ubuntu server 怎么都连不上了检查原因尽然是 没有连上网,ifconfig 里也没有对应ip只有inet 6 address 网上说要重新分配一下地址才好使(sudo dhclient),可是我试过以后并没用没办法,选择vmware --编辑--虚拟网络编辑器--选中VMnet0 选择恢复默认配置,然后等待一段时间后,在--桥接到:---realtek PCIe ....--然后点击---应用---确定这些都要在虚拟机poweroff 的情况下才能有用重启虚拟机--结果很意外,网是连上了,可是ip 改动了 不是原来的ip ,这真的把我吓到了。虽然之前有好好配置各个机器的hosts 文件,可是大多数 配置我还是直接填写的ip地址。这要ip 都变了,那我的改动的工作量就大了去了。。。其实也在意料之中,因为虚拟机的ip估计也是随机分配的,所以,虽然在同一网段。被分配到不同ip 的可能性非常大没办法,硬着头皮找绑定ip的办法。答案都指向同一个地方。还记得之前说改/etc/network/interfaces 这个文件么?我当时说的是没什么特别重要的情况就别改了,现在作用来了。(强调一下,这里说的是ubuntu系统,不是centos ,我知道很多人用的centos ,那里的文件应该叫/etc/sysconfig/XXXX,它的作用在centos 里就比较大了,因为配置hadoop 的时候网卡和认证也要用,hostname 也会用到)改成 如下:# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceauto loiface lo inet loopback# The primary network interface--- not iface eth0 inet dhcp# 注意是inet static 哦 gateway 查一下其他hadoop集群的机器,掩码就看看网段分布就好了auto eth0iface eth0 inet staticaddress 192.168.1.115gateway 192.168.1.1netmask 255.255.255.0查网关的命令:ip route showdefault via xxx.xxx.xxx.xxx 这个就是你的网关地址这样我把虚拟机那两台机器的ip都绑定到对应的115 和116 了如果仅仅这样更改很可能还是上不了网,这里还要改dnssudo nano&/etc/resolv.conf添加nameserver 192.168.1.1nameserver 220.170.64.68要让其永久改变,因此,执行:sudo nano /etc/resolvconf/resolv.conf.d/base添加nameserver 192.168.1.1nameserver 220.170.64.68这下安心很多重启。有时候还是会出现连不上的情况,看看--我的电脑--管理--服务---telnet---选择“自动” 而不是“自动(延时启动)”这样就好了然后正题,zookeeper 和 Hbase &我这里选择的都是最新的 stable 的版本hbase-1.0.1.1 版本 和zookeeper-3.4.6 版本这两个都是可以从Apache官网指定中国镜像地点下载的下载好了,然后tar xvf xxx xxxx就可以解压了,我都是直接解压到当前用户目录的然后是先配置zookeeper ,同样因为是在用户工作目录里工作的文件夹,不能配置到系统的环境变量但是可以 配置到/etc/bash.bashrc 文件里的环境变量因为之前配置了hadoop 的环境变量,现在只要在末尾添加HBASE_HOME=/home/luis/hbase-1.0.1.1ZOOKEEPER_HOME=/home/luis/zookeeper-3.4.6PATH=$HADOOP_HOME/bin:$HBASE_HOME/bin:$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf就可以了,三台机子都要配,不能用scp 拷贝,可能前面那么大段的代码有机器独有的配置信息。一台一台的配置就好了配好了重启复制zookeeper-3.4.6 文件夹下的 /conf/zoo_sample.cfg 改成 conf/zoo.cfg命令 cp conf/zoo_sample.cfg conf/zoo.cfg然后nano zoo.cfg&修改:#一个的数据,一个是数据日志dataDir=/home/luis/zookeeper-3.4.6/var/datadataLogDir=/home/luis/zookeeper-3.4.6/var/datalog#这些server.x 数字有用的server.5=h5:server.1=h1:server.2=h2:然后在zookeeper-3.4.6 文件夹下 创建目录 mkdir -p var/data &和 mkdir -p&var/datalog然后在data 文件夹下 创建一个myid 文件这里写对应 server 的id比如前面 h5 号机器,的server.x 的数字是5 这里就写个5其他机器做对应修改然后scp 拷贝到其他机器的用户目录上我这里是给每台机器都装上了zookeeper,其实你也可以不这样hbase的,这里说一下,好像说hadoop 和hbase 要版本对应,我查了一下hadoop-2.6.0 的对应版本找到hbase 的最新的稳定版就好。环境变量上一步就已经加了修改配置文件hbase-env.sh这个里头把java 环境变量写进去补充:然后有的博客写到:配置文件hbase-env.sh时候,要修改:HBASE_MANGES_ZK=false (表示不使用hbase自带的zookeeper)HBASE_HEAPSIZE=8000HBASE_LOG_DIR=/home/luis/hbase-1.0.1.1/logs修改hbase-site.xml&configuration&&property&&name&hbase.rootdir&/name&&!--这里写的是namenode 的地址,一定要用ip表示,然后distributed写成true--&&value&hdfs://192.168.1.113:8020/hbase&/value&&/property&&property&&name&hbase.cluster.distributed&/name&&value&true&/value&&/property&&property&&name&hbase.zookeeper.quorum&/name&&value&h5,h1,h2&/value&&/property&&property&&name&hbase.zookeeper.property.dataDir&/name&&value&/home/luis/zookeeper-3.4.6/var/data&/value&&/property&&/configuration&后面两个属性是关于Zookeeper集群的配置。我的Zookeeper安装在h5,h1和h2上。修改regionservers:改成如下内容h1h2同样的scp 到其他用户的用户目录:然后把zookeeper-2.4.6 和 hbase-1.0.1.1 的文件夹权限全部设置成775sudo -R 775 xxxx一个 同步时钟,,这个步骤是很重要的,尤其是你要用到时间戳字段的时候,怎么能忍受时间不一致用113,就是那个namenode 节点用作我的ntp服务器,但是三台都要装sudo apt-get install ntp但是这里又有一个问题,有可能装不上,依赖不完全,sudo apt-get -f install ntp还有可能连不上us.这个就是天朝的伟大的墙了修改hosts 文件,哪台装不上修改哪台,加在后面就可以了91.189.92.152 91.189.91.13 91.189.91.14 us.然后就可以装上了然后设置namenode 节点的#草稿文件driftfile /var/lib/ntp/ntp.drift#ntp serverserver 202.112.0.7 preferserver 127.127.1.0fudge 127.127.1.0 stratum 5restrict -4 default kod notrap nomodify nopeer noqueryrestrict -6 default kod notrap nomodify nopeer noquery# Local users may interrogate the ntp server more closely.restrict 127.0.0.1restrict ::1# Clients from this (example!) subnet have unlimited access, but only if# cryptographically authenticated.restrict 192.168.1.113 mask 255.255.255.0 nomodify其他的我都没改然后修改 slaves 的/etc/ntp.conf# Use Ubuntu's ntp server as a fallback.设置成从113 ,namenode同步时间就好啦#server server 192.168.1.113 preferserver 127.127.1.0fudge 127.127.1.0 stratum 10# By default, exchange time with everybody, but don't allow configuration.restrict -4 default kod notrap nomodify nopeer noqueryrestrict -6 default kod notrap nomodify nopeer noquery# Local users may interrogate the ntp server more closely.restrict 127.0.0.1restrict ::1# Clients from this (example!) subnet have unlimited access, but only if# cryptographically authenticated.restrict 192.168.1.113restrict 192.168.1.115 mask 255.255.255.0 nomodify其他的我也没改然后修改namenode 的ntp /etc/crontab在里头加一行#连接的是清华的ntp服务器。国家授时中心怎么都连不上,每十五分钟同步一次*/15 * * * * /usr/sbin/ntpdate 202.112.0.7在其他的slaves 节点的ntp /etc/crontab 加上# connect 113 server and &lock-in time during every 5 minutes*/5 * * * * /usr/sbin/ntpdate 192.168.1.113然后保存,重启第一次启动所有集群1.启动Zookeeper分别在每个机器上运行命令zkServer.sh start或者在$ZOOKEEPER_HOME/bin目录下运行./zkServer.sh start命令。然后可以通过命令jps来查看Zookeeper启动的进程QuorumPeerMain。&2、这里我没有实现!!&#26684;式化zookeeper 集群(高可用HA)hdfs zkfc -formatzk他会根据$HADOOP_HOME/etc/hadoop/core-site.xml文件中ha.zookeeper.quorum的&#20540;来进行初始化。3、启动journalnode进程在每个节点上启动 hadoop-daemon.sh start journalnode或者在master节点启动hadoop-daemons.sh start journalnode 但是这种启动方式不会启动master的journalnode4、&#26684;式化namenode在master节点,hdfs namenode -format5、启动namenodehadoop-daemon.sh start namenode6、这里我也没做!!我只有一台master ,secondnamenode 和namenode是同一台机子,将刚才&#26684;式化的namenode信息同步到备用namenode上hdfs namenode -bootstrapStandby7、这一步我也没做,理由同上,在master2上启动namenode&hadoop-daemon.sh start namenode8、启动所有datanode在master 里执行 hadoop-daemons.sh start datanode9、启动yarn在master 执行 start-yarn .sh10、这一步我也没做,也是高可用HA时才会用到,启动ZKFC11、hadoop 启动成功12、启动hbasemaster 启动 start-hbase.sh至此,第一次启动全部完成日后启动:1、对于高可用(HA):要先启动Zookeeper & zkServer.sh.start(每个节点)2、启动hadoop:&start-dfs.sh start-yarn.sh (master1节点)3、启动hbase:start-hbase.sh (master1节点)参考文章网址:(我和他配置还是有很大的不同,但是,后一部分的高可用HA 有参考他的)
(责任编辑:admin)

我要回帖

更多关于 hadoop2 zookeeper ha 的文章

 

随机推荐