部署HBase系统(分布式部署)
1.简介
HBase系统主要依赖于zookeeper和hdfs系统,所以部署HBase需要先去部署zookeeper和hadoop
2.部署开始
IP或者HOSTNAME需要根据自身主机信息设定。
部署资源:
两个节点:xufeng-2(管理节点) xufeng-3(从节点)
xufeng-3 | xufeng-2 |
zookeeper namenode SecondaryNameNode master
|
datanode regionserver |
部署版本:
CDH5.4.2
1.设定主机hostname
#adduser hadoop //添加一个用户
#passwd hadoop //修改密码
2.设定主机hostame
vi /etc/sysconfig/network
3.设定hosts文件:
10.211.55.18 xufeng-3 10.211.55.21 xufeng-2
4.拷贝安装包,按照如下设定安装包路径
其中组件文件夹通过软连接到具体安装目录,配置文件独立于安装目录,这样便于后续版本的替换
安装包可以去官网:http://archive.cloudera.com/cdh5/cdh/5/下载。
5.安装jdk,如下版本,hadoop已经全面放弃了1.6版本,所以请安装1.7及以上版本
jdk-7u79-linux-x64.rpm
6.设定无密码登录
hadoop用户下:
xufeng-3上执行: ssh-keygen cd ~/.ssh scp id_rsa.pub xufeng-2:/home/hadoop/.ssh/authorized_keys xufeng-2上执行 ssh-keygen cd ~/.ssh scp id_rsa.pub xufeng-3:/home/hadoop/.ssh/authorized_keys
增加:
启动的时候需要ssh到自身,所以也需要将自身的公钥发布给自己:
在各个节点上执行:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
7.设定环境变量,通过环境变量的设定,各个服务可以找到对应的安装路径和配置文件路径
[hadoop@xufeng-3 hbase-config]$ vi ~/.bash_profile #hadoop export HADOOP_HOME=/opt/hadoop/hadoop export HADOOP_CONF_DIR=/opt/hadoop/hadoop-config export HADOOP_LOG_DIR=/opt/hadoop/hadoop/xufeng #hbase export HBASE_HOME=/opt/hadoop/hbase export HBASE_CONF_DIR=/opt/hadoop/hbase-config #zookeeper export ZOOKEEPER_HOME=/opt/hadoop/zookeeper export ZOOCFGDIR=/opt/hadoop/zookeeper-config #spark export SPARK_HOME=/opt/hadoop/spark export SPARK_CONF_DIR=/opt/hadoop/spark-config PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin:SPARK_HOME/bin export PATH
配置文件和包分割开来,便于后续方便的替换包(版本)。
8.【单节点】设定zookeeper,启动zookeeper
a.将zookeeper安装包内的conf文件夹下的内容拷贝到zookeeper-config目录下,并生成zoo.cfg文件
[hadoop@xufeng-3 bin]$ cd /opt/hadoop/zookeeper-config/ [hadoop@xufeng-3 zookeeper-config]$ ll 总用量 20 -rwxr-x---. 1 hadoop hadoop 535 6月 12 18:05 configuration.xsl -rwxr-x---. 1 hadoop hadoop 2693 6月 12 18:05 log4j.properties -rw-rw-r--. 1 hadoop hadoop 72 6月 12 18:13 zoo.cfg -rw-rw-r--. 1 hadoop hadoop 3633 6月 12 18:13 zookeeper.out -rwxr-x---. 1 hadoop hadoop 808 6月 12 18:05 zoo_sample.cfg
zoo.cfg内容
[hadoop@xufeng-3 zookeeper-config]$ vi zoo.cfg tickTime=2000 dataDir=/opt/hadoop/hadoop_data/zookeeper clientPort=2181 ~
b.启动zookeeper
zkServer.sh start
检查线程
[hadoop@xufeng-3 zookeeper-config]$ jps 5299 QuorumPeerMain 5634 Jps
9.设定hadoop,启动hadoop
需要去主从节点上设定如下几个文件,这些文件都放在了/opt/hadoop/hadoop-config下,通过环境变量的指定进程能够读取到。
其中如果无特殊需要hadoop-env.sh和log4j文件只从安装包中拷贝不修改。
core-site.xml hdfs-site.xml hadoop-env.sh log4j.properties slaves
core-site.xml内容:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://xufeng-3:9000</value> <description>NameNode URI</description> </property> <property> <name>hadoop.tmp.dir</name> <value>file:///opt/hadoop/hadoop_data/hadoop/hdfs/temp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
hdfs-site.xml内容:dfs.replication设定为1,因为我们只有一个datanode
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:///opt/hadoop/hadoop_data/hdfs/namenode</value> <description>NameNode directory for namespace and transaction logs storage.</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///opt/hadoop/hadoop_data/hdfs/datanode</value> <description>DataNode directory</description> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <name>dfs.datanode.use.datanode.hostname</name> <value>false</value> </property> <property> <name>dfs.namenode.datanode.registration.ip-hostname-check</name> <value>false</value> </property> <property> <name>dfs.namenode.http-address</name> <value>xufeng-3:50070</value> <description>Your NameNode hostname for http access.</description> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>xufeng-3:50090</value> <description>Your Secondary NameNode hostname for http access.</description> </property> </configuration>
slaves内容: 只在xufeng-2这台机器上启动datanode
xufeng-2
启动hdfs
start-dfs.sh
注意:
听说centOS6有一个bug:
需要关闭防火墙才能联通端口:
service iptables stop
chkconfig iptables off
进入页面:hdfs安装完成:
10,设定HBase,启动HBase
的地水电费
将配置文件从安装目录中拷贝到/opt/hadoop/hbase-config,主要有如下文件:
其中hdfs-site.xml为软连接到hadoop的配置文件,因为HBase是作为hdfs的客户端角色。
hbase-env.sh内容(修改点):不要让HBase使用集成的zookeeper,而是使用我们在xufeng-3上启动的zookeeper服务
# Tell HBase whether it should manage it's own instance of Zookeeper or not. export HBASE_MANAGES_ZK=false
hbase-site.xml内容:
<configuration> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.rootdir</name> <value>hdfs://xufeng-3:9000/hbase</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>xufeng-3:2181</value> </property> </configuration>
regionservers内容:只在xufeng-2这个从节点上启动regionserver服务
xufeng-2
在xufeng-3节点上启动HBase:
start-hbase.sh
进入页面:HBase安装完成: