个人经验是最好放在hadoop一块,这样能够作个全盘拷贝与管理。好比以前安装的hadoop在/usr/hadoop目录下,那就把这2个组件放在一块,好比统一放在:/usr/hadoop/...或 /home/hadoop/...这样之后再有组件也能够放在这里,方便了后续集群的从新部署。为了避开混淆,能够不使用hadoop,如使用:hdfs,bigdata, cloud,and so on. java
1.安装zookeeper,自没必要说,须要说明的是配置问题。 shell
(1)在conf目录下,将 zoo_sample.cfg 更名为 zoo.cfg,修改成以下内容: apache
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. dataDir=/home/hdfs/zookeeper # the port at which the clients will connect clientPort=2181 initLimit=5 syncLimit=2 dataLogDir=/home/hdfs/zookeeper/logs server.1=192.168.1.70:2888:3888 server.2=192.168.1.71:2888:3888 server.3=192.168.1.72:2888:3888 server.4=192.168.1.73:2888:3888(2)建立myid文件与logs目录
1) myid文件是在zookeeper_home下直接新建一个myid文件,并在里面写入编号。编号的肯定是根据zoo.cfg里 本身ip对应的 server.X app
2)logs目录也是本身手动建立的。 oop
2.安装hbase 测试
解压安装后,修改conf 里的配置文件: spa
(1) hbase-env.sh 命令行
export JAVA_HOME=/usr/java/jdk1.7.0_17/ export HBASE_CLASSPATH=/usr/hadoop/conf export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode" #export HBASE_OPTS="-ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode" export HBASE_MANAGES_ZK=false export HBASE_PID_DIR=/home/hdfs/pids #目录应该为hadoop:hadoop全部,以避免发生权限问题
要注意的是: HBASE_MANAGES_ZK 和 HBASE_PID_DIR code
(2)hbase-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://Master.Hadoop:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.master</name> <value>192.168.1.70:60000</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>192.168.1.71,192.168.1.72,192.168.1.73</value> </property> <!-- End of properties that are directly mapped from ZooKeeper's zoo.cfg --> </configuration>
(3)regionservers server
在regionservers添加slaves的ip:
192.168.1.71 192.168.1.72 192.168.1.73
3.启动/测试
启动顺序:hadoop-->zookeeper-->hbase
关闭顺序:hbase-->zookeeper-->hadoop
1)启动zookeeper
zookeeper的启动须要分别在每一个计算机的节点上手动启动。进入zookeeper/bin目录:
[... bin]$ ./zkServer.sh start [... bin]$ jps #启动成功应该含有:QuorumPeerMain 进程 查看状态:(已所有手动启动集群中的zookeeper) [... bin]$ ./zkServer.sh status ...... #会显示 Model:follower/leader 关闭zookeeper [... bin]$ ./zkServer.sh stop
2)启动hbase
在hbase的bin下进行操做:(注意顺序)
[... bin]$ ./hbase-daemon.sh start master //启动Master [... bin]$ ./start-hbase.sh [... bin]$ ./hbase shell //shell命令行接口,进入后可以使用list显示tables …… [... bin]$ ./hbase-daemon.sh stop master //启动Master [... bin]$ ./stop-hbase.sh
能够经过:http://192.168.1.70:60010/master-status 查看hbase容许状态,也可经过其判断是否成功启动。
4.错误解决及排除
(1)zookeeper遇到的问题:
1)Error contactiong service. It is probably not runnin
查看zookeeper状态时出现:Error contactiong service. It is probably not running
先使用jps查看是否有QuorumPeerMain;
再查看2181端口是否开启: netstat -an | grep 2181
若是这2项都没有问题,缘由多是你只是单机启动,集群中其余计算机并无启动zookeeper,把集群中其余的启动后再使用此命令。并且此命令功能太过单一,反馈信息也不许确。
(2)Hbase遇到的问题
ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times
问题发生在list 查看表时,经过查看 logs/ 下的日子信息:
stopping hbasecat: /tmp/hbase-mango-master.pid: No such file or directory
发现是HBASE_PID_DIR 没有配置,使用的是默认配置,可是默认配置会在下次启动后自动清除,因此须要手动配置并建立相应的文件。(参考:hbase-env.sh)
(3)hadoop遇到的问题
All directories in dfs.data.dir are invalid
这个问题之前没有遇到过,并且在以前节点启动正常,但此次不知道是何缘由。
经过:hadoop dfsadmin -report 发现一个节点没有启动,经过查看此节点的logs信息,发现是文件权限引发的:Invalid directory in dfs.data.dir: Incorrect permission for /hadoop/hadoop-data, expected: rwxr-xr-x, while actual: rwxrwxr-x
更改权限,文件解决:chmod g-w /hadoop/hadoop-data/ (其余节点权限和之前同样却没有出现这问题,好奇怪~~)
Ps:最有效、快速定位错误的方法是看logs,千万不要忽视了哦!