hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)
本次是第一次在生产环境部署HBase,本文若有配置上的不妥之处还请高手指正。
hadoop版本:hadoop-2.4.1
HBase版本:hbase-0.98.6.1-hadoop2
Zookeeper版本:ZooKeeper3.4.6
JDK:1.6
操作系统:centOS6.3 64bit
1. 安装snappy
#yum install snappy
Installed: snappy.x86_64 :1.1.-.el6
#yum install snappy-devel
记录一下,当前GCC版本4.4.7
2. 由于hadoop官网下载的bin包中包含的native lib是32bit环境编译的,需要重新编译hadoop源码以获得64bit的native lib。
$ file libhadoop.so.1.0.
libhadoop.so.1.0.: ELF -bit LSB shared object, Intel , version (SYSV), dynamically linked, not stripped
(1) 在hadoop官网下载 hadoop-2.4.1-src.tar.gz。解压后打开 BUILDING.txt
Requirements: * Unix System
* JDK 1.6+
* Maven 3.0 or later
* Findbugs 1.3. (if running findbugs)
* ProtocolBuffer 2.5.
* CMake 2.6 or newer (if compiling native code)
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
按照上述指示,
(2) 下载 Maven:http://maven.apache.org/download.cgi
(3) 下载 ProtocolBuffer 2.5.0: https://code.google.com/p/protobuf/downloads/list,解压编译
$ cd protobuf-2.6.
$ ./configure
出现以下错误:
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
经过网上搜索,需要安装c++相关的库:
# yum install glibc-headers
# yum install gcc-c++
再次执行 ./configure,这次通过了。
然后就可以make了
$ make
# make install
安装成功后,可以在/usr/local/lib/下看到库文件:
-rw-r--r-- root root Oct : libprotobuf.a
-rwxr-xr-x root root Oct : libprotobuf.la
-rw-r--r-- root root Oct : libprotobuf-lite.a
-rwxr-xr-x root root Oct : libprotobuf-lite.la
lrwxrwxrwx root root Oct : libprotobuf-lite.so -> libprotobuf-lite.so.9.0.
lrwxrwxrwx root root Oct : libprotobuf-lite.so. -> libprotobuf-lite.so.9.0.
-rwxr-xr-x root root Oct : libprotobuf-lite.so.9.0.
lrwxrwxrwx root root Oct : libprotobuf.so -> libprotobuf.so.9.0.
lrwxrwxrwx root root Oct : libprotobuf.so. -> libprotobuf.so.9.0.
-rwxr-xr-x root root Oct : libprotobuf.so.9.0.
-rw-r--r-- root root Oct : libprotoc.a
-rwxr-xr-x root root Oct : libprotoc.la
lrwxrwxrwx root root Oct : libprotoc.so -> libprotoc.so.9.0.
lrwxrwxrwx root root Oct : libprotoc.so. -> libprotoc.so.9.0.
-rwxr-xr-x root root Oct : libprotoc.so.9.0.
(4) 安装cmake
# yum install cmake
(5) 安装openssl
# yum install openssl
# yum install openssl-devel
(6) 安装zlib相关
# yum install zlib
# yum install zlib-devel
(7) 下载 ant 1.9.4
下载 http://ant.apache.org/bindownload.cgi
也可以直接 yum install ant
(8) 设置环境变量:
export JAVA_HOME=/usr/java/jdk1.6.0_43
export PATH="$JAVA_HOME/bin:$PATH" export MAVEN_HOME=/data2/hadoop_source/apache-maven-3.2.3
export PATH="$MAVEN_HOME/bin:$PATH"
export ANT_HOME=/data2/hadoop_source/apache-ant-1.9.
export PATH="$PATH:$ANT_HOME/bin"
(9) 编译hadoop的native库:
/data2/hadoop_source/apache-maven-3.2.3/bin/mvn package -X -Pdist,native -Dtar -DskipTests -Drequire.snappy
最后即使有部分project编译出错也没有关系,只要 hadoop-hdfs-project,hadoop-common-project 编译通过就可以了。
(10) 编译完成后,可以找到native lib:
# find . -name 'lib*.so*'
./hadoop-hdfs-project/hadoop-hdfs/target/hadoop-hdfs-2.4./lib/native/libhdfs.so
./hadoop-hdfs-project/hadoop-hdfs/target/hadoop-hdfs-2.4./lib/native/libhdfs.so.0.0.
./hadoop-hdfs-project/hadoop-hdfs/target/native/target/usr/local/lib/libhdfs.so
./hadoop-hdfs-project/hadoop-hdfs/target/native/target/usr/local/lib/libhdfs.so.0.0.
./hadoop-common-project/hadoop-common/target/hadoop-common-2.4./lib/native/libhadoop.so.1.0.
./hadoop-common-project/hadoop-common/target/hadoop-common-2.4./lib/native/libhadoop.so
./hadoop-common-project/hadoop-common/target/native/target/usr/local/lib/libhadoop.so.1.0.
./hadoop-common-project/hadoop-common/target/native/target/usr/local/lib/libhadoop.so
将库文件拷贝至系统目录 /usr/local/lib64/
cp ./hadoop-hdfs-project/hadoop-hdfs/target/hadoop-hdfs-2.4./lib/native/* /usr/local/lib64/
cp ./hadoop-common-project/hadoop-common/target/hadoop-common-2.4.1/lib/native/* /usr/local/lib64/
进入/usr/local/lib64/,创建symbol link
# ln -s libhdfs.so.0.0. libhdfs.so
# ln -s libhadoop.so.1.0. libhadoop.so
(11) 下载hbase, http://mirrors.cnnic.cn/apache/hbase/hbase-0.98.7/
解压后进入目录,确认native lib是否已经安装成功:
$ LD_LIBRARY_PATH=/usr/local/lib64 ./bin/hbase org.apache.hadoop.util.NativeLibraryChecker
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.NativeCodeLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Native library checking:
hadoop: true /usr/local/lib64/libhadoop.so.1.0.0
zlib: true /lib64/libz.so.1
snappy: true /usr/lib64/libsnappy.so.1
lz4: true revision:99
bzip2: false
由于打算仅使用snappy作为压缩算法,所以仅仅需要确认 hadoop, snappy 是true就行了。
本次编译native lib过程中,出现了各种错误,都是因为上面列出的某些软件未安装。
无须在每个机器上再次编译,只需将编译过程中产生的那些 .a, .so, 文件拷贝至每个机器即可。当然了,symbol link还是要重新创建的。
---------------------------- 分割线 上方是 hadoop native lib 的编译 ------------------------------------------
3. 配置hbase分布式环境的总体流程
本次安装部署的服务器为5台,hbase-0为NameNode, hbase-r为ResourceManager,hbase-1、hbase-2、hbase-3为DataNode。
所有服务器的安装的目录为:
hadoop程序目录:/hbase/hadoop
hbase程序目录:/hbase/hbase
zookeeper的程序目录:/hbase/zookeeper
hdfs数据目录(data node用):/hbase/hdfs
hdfs元数据目录(name node用):/hbase/hdfsmeta
hdfs临时目录:/hbase/hdfstmp
yarn中间数据目录:/hbase/yarnlocal
yarn日志目录:/hbase/yarnlog
job history server的临时目录:/hbase/mr-history/tmp
job history server的done目录:/hbase/mr-history/done
各个deameon的pid目录(安全起见,目录权限700):/hbase/var/pid
zookeeper的数据目录:/hbase/zookeeperdata
zookeeper的log目录:/hbase/zookeeperlog
hbase临时目录:/hbase/hbasetmp
ZooKeeper的下载地址:http://mirrors.cnnic.cn/apache/zookeeper/stable/
本次下载的是 ZooKeeper3.4.6。
本次安装采用独立的ZooKeeper,不使用hbase自带的ZooKeeper。
(1) 配置host name, /etc/hosts,为了方便使用,我将hostname配置成了以下样子:
10.161.150.10 hbase-
10.161.150.20 hbase-r
10.161.150.11 hbase-
10.161.150.12 hbase-
10.161.150.13 hbase-
为了方便,还添加了1个 hbase-me,代表当前服务器的内网IP。
注意:上述配置hostname要放在靠前的位置,hbase的Master启动的时候,会根据ip查找hostname,相同ip的有多个hostname的时候,排在第1个的会被采用,然后被传播到RegionServer。
同时,将主机hostname修改成对应的名字。修改/etc/sysconfig/network,或者立即生效:
hostname hbase-
(2) 配置免密码ssh
参考我的另一篇文章:http://www.cnblogs.com/got-my-way/p/4030923.html
(3) 解压hadoop包。
(4) 解压hbase包。
(5) 为了方便运行,将需要的环境变量配置在当前用户的.bashrc
vi ~/.bashrc
如下:
# For hadoop and hbase -------------------------------------
export JAVA_HOME="/usr/java/jdk1.6.0_43"
export PATH="$JAVA_HOME/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib64:/usr/lib64:/usr/local/lib"
export HADOOP_PREFIX="/hbase/hadoop"
export HADOOP_HOME="/hbase/hadoop"
export HADOOP_YARN_HOME=$HADOOP_PREFIX
export HADOOP_CONF_DIR="/hbase/hadoop/etc/hadoop"
export HBASE_HOME="/hbase/hbase"
export HBASE_CONF_DIR="/hbase/hbase/conf"
export ZOOKEEPER_HOME="/hbase/zookeeper"
#log dir -----
export HADOOP_LOG_DIR="/hbase/var/log"
export YARN_LOG_DIR="/hbase/var/log"
#pid dir -----
export HADOOP_PID_DIR="/hbase/var/pid"
export HADOOP_SECURE_DN_PID_DIR="/hbase/var/pid"
export HADOOP_MAPRED_PID_DIR="/hbase/var/pid"
export YARN_PID_DIR="/hbase/var/pid"
#java options -----
export HADOOP_JVM_GC_OPTS="-XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0"
export HADOOP_JVM_SECURITY_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"
export HADOOP_NAMENODE_OPTS="${HADOOP_JVM_SECURITY_OPTS} ${HADOOP_JVM_GC_OPT}"
export HADOOP_DATANODE_OPTS="${HADOOP_JVM_SECURITY_OPTS} ${HADOOP_JVM_GC_OPT}"
export HADOOP_SECONDARYNAMENODE_OPTS="${HADOOP_JVM_SECURITY_OPTS} ${HADOOP_JVM_GC_OPT}"
export YARN_RESOURCEMANAGER_OPTS="${HADOOP_JVM_SECURITY_OPTS} ${HADOOP_JVM_GC_OPT}"
export YARN_NODEMANAGER_OPTS="${HADOOP_JVM_SECURITY_OPTS} ${HADOOP_JVM_GC_OPT}"
export YARN_PROXYSERVER_OPTS="${HADOOP_JVM_SECURITY_OPTS} ${HADOOP_JVM_GC_OPT}"
export HADOOP_JOB_HISTORYSERVER_OPTS="${HADOOP_JVM_SECURITY_OPTS} ${HADOOP_JVM_GC_OPT}"
export HADOOP_HEAPSIZE=""
export YARN_HEAPSIZE=""
export HBASE_OPTS="-XX:MaxDirectMemorySize=128m ${HADOOP_JVM_SECURITY_OPTS} ${HADOOP_JVM_GC_OPT}"
export HBASE_HEAPSIZE=""
export HBASE_MANAGES_ZK=false
#export YARN_RESOURCEMANAGER_HEAPSIZE=
#export YARN_NODEMANAGER_HEAPSIZE=
#export YARN_PROXYSERVER_HEAPSIZE=
#export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=
(6) 安装上述“编译native lib”步骤中所安装过的包
yum install snappy
yum install snappy-devel
yum install glibc-headers
yum install gcc-c++
yum install cmake
yum install openssl
yum install openssl-devel
yum install zlib
yum install zlib-devel
至此基本的环境准备好了。接下来是具体的配置
4. 进入hadoop程序目录,配置hadoop (参考文档:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html)
(1) 修改配置文件
a. etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hbase-0:9000/</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value></value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hbase/hdfstmp</value>
</property>
<property>
<name>hadoop.logfile.size</name>
<value></value>
</property>
<property>
<name>hadoop.logfile.count</name>
<value></value>
</property>
<property>
<name>io.bytes.per.checksum</name>
<value></value>
</property>
<property>
<name>io.skip.checksum.errors</name>
<value>false</value>
</property>
<property>
<name>io.serializations</name>
<value>org.apache.hadoop.io.serializer.WritableSerialization</value>
</property>
<property>
<name>io.seqfile.compress.blocksize</name>
<value></value>
</property>
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
</configuration>
b. etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value></value>
</property>
<property>
<name>dfs.blocksize</name>
<value></value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value></value>
</property> <!-- config for NameNode below -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/hbase/hdfsmeta</value>
</property> <!-- config for DataNode below -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/hbase/hdfs</value>
</property>
</configuration>
c. etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- config for Node Manager below -->
<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.nodemanager.resource.memory-mb</name>
<value></value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/hbase/yarnlocal</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/hbase/yarnlog</value>
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value></value>
</property> <!-- config for Resource Manager below -->
<property>
<name>yarn.resourcemanager.address</name>
<value>hbase-r:</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hbase-r:</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hbase-r:</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hbase-r:</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hbase-r:</value>
</property> <property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value></value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value></value>
</property> </configuration>
d. etc/hadoop/mapred-site.xml
<configuration>
<!-- config for MapReduce Applications below -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.output.compress</name>
<value>true</value>
<description>Should the job outputs be compressed?</description>
</property>
<property>
<name>mapred.output.compression.type</name>
<value>RECORD</value>
</property>
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value></value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1024M</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value></value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx2048M</value>
</property>
<property>
<name>mapreduce.task.io.sort.mb</name>
<value></value>
</property>
<property>
<name>mapreduce.task.io.sort.factor</name>
<value></value>
</property>
<property>
<name>mapreduce.reduce.shuffle.parallelcopies</name>
<value></value>
</property> <!-- config for MapReduce JobHistory Server below -->
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/hbase/mr-history/tmp</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/hbase/mr-history/done</value>
</property>
f. etc/hadoop/slaves
将作为DataNode的host name添加进去:
hbase-1
hbase-2
hbase-3
g. 上述配置好的hadoop目录复制到各台服务器。
5. 进入zookeeper目录,修改配置文件
(1) cp conf/zoo_sample.cfg conf/zoo.cfg,修改conf/zoo.cfg以下配置:
dataDir=/hbase/zookeeperdata
dataLogDir=/hbase/zookeeperlog server.1=hbase-0:2888:3888
server.2=hbase-r:2888:3888
server.3=hbase-1:2888:3888
server.4=hbase-2:2888:3888
server.5=hbase-3:2888:3888
(2) 在各台机器上 /hbase/zookeeperdata/下建立文件名myid,分别写入对应的1,2,3,4,5 ZooKeeper序号。
6. 进入hbase程序目录,配置hbase (参考文档:http://hbase.apache.org/book.html#quickstart-fully-distributed )
本次配置的架构为:hbase-0为Master,hbase-1、hbase-2、 hbase-3为RegionServer,ZooKeeper配置在所有服务器(文档中推荐3,5,7)。
(1) 修改配置文件
a. conf/regionservers
hbase-
hbase-
hbase-
b. conf/backup-masters
将hbase-r设置为master的backup
hbase-r
c. conf/hbase-env.sh
export HBASE_OPTS="-XX:+UseConcMarkSweepGC ${HBASE_OPTS}"
d. conf/hbase-site.xml
<configuration>
<property>
<name>hbase.tmp.dir</name>
<value>/hbase/hbasetmp</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hbase-0:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value></value>
</property>
<property>
<name>hbase.master.info.bindAddress</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.column.max.version</name>
<value></value>
</property> <!-- for Zoo Keeper -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hbase-,hbase-r,hbase-,hbase-,hbase-</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/hbase/zookeeperdata</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value></value>
</property>
<property>
<name>hbase.zookeeper.property.maxClientCnxns</name>
<value></value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value></value>
</property> <!-- setting for region server -->
<property>
<name>hbase.hregion.max.filesize</name>
<value></value>
</property>
<property>
<name>hbase.regionserver.port</name>
<value></value>
</property>
<property>
<name>hbase.regionserver.codecs</name>
<value>snappy,lz4</value>
</property>
<property>
<name>hbase.regionserver.info.port</name>
<value></value>
</property>
<property>
<name>hbase.regionserver.info.bindAddress</name>
<value>hbase-me</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value></value>
</property>
<property>
<name>hbase.ipc.server.callqueue.read.ratio</name>
<value>0.2</value>
</property>
<property>
<name>hbase.ipc.server.callqueue.scan.ratio</name>
<value>0.2</value>
</property>
<property>
<name>hbase.zookeeper.peerport</name>
<value></value>
</property>
<property>
<name>hbase.zookeeper.leaderport</name>
<value></value>
</property>
<property>
<name>hbase.offpeak.start.hour</name>
<value></value>
</property>
<property>
<name>hbase.offpeak.end.hour</name>
<value></value>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value></value>
</property>
<property>
<name>hbase.rpc.shortoperation.timeout</name>
<value></value>
</property>
<property>
<name>hbase.ipc.client.tcpnodelay</name>
<value>true</value>
</property>
<property>
<name>hbase.rest.port</name>
<value></value>
</property> <!-- setting for client -->
<property>
<name>hbase.client.pause</name>
<value></value>
</property>
<property>
<name>hbase.ipc.client.tcpnodelay</name>
<value>false</value>
</property>
<property>
<name>ipc.ping.interval</name>
<value></value>
</property>
<property>
<name>hbase.client.write.buffer</name>
<value></value>
</property>
<property>
<name>hbase.client.retries.number</name>
<value></value>
</property>
<property>
<name>hbase.client.max.total.tasks</name>
<value></value>
</property>
<property>
<name>hbase.client.max.perserver.tasks</name>
<value></value>
</property>
<property>
<name>hbase.client.max.perregion.tasks</name>
<value></value>
</property>
<property>
<name>hbase.client.scanner.caching</name>
<value></value>
</property> </configuration>
7. 检查某些系统设置
(1) 各台服务器关闭防火墙,或者将下列端口加入防火墙允许访问列表(/etc/sysconfig/iptables)
建议在防火墙上设置所有机器的内网IP,可以互相访问所有端口(单独设置特定的端口范围太过麻烦了,hadoop, hbase, spark, yarn, zookeeper等各种监听端口太多了)。
以下列表中部分端口号没有在配置的xml出现过,是hadoop或hbase的缺省值(不能保证已经列出了全部监听端口号,仅供参考)。
2181 | hbase.zookeeper.property.clientPort |
2888 | hbase.zookeeper.peerport |
3888 | hbase.zookeeper.leaderport |
9000 | fs.defaultFS |
10020 | mapreduce.jobhistory.address |
16010 | hbase.master.info.port |
16020 | hbase.regionserver.port |
16030 | hbase.regionserver.info.port |
18025 | yarn.resourcemanager.resource-tracker.address |
18030 | yarn.resourcemanager.scheduler.address |
18040 | yarn.resourcemanager.address |
18088 | yarn.resourcemanager.webapp.address |
18141 | yarn.resourcemanager.admin.address |
19080 | hbase.rest.port |
19888 | mapreduce.jobhistory.webapp.address |
50010 | hdfs client |
60000 | hbase.master.port |
60020 | hbase.regionserver.port |
33651 | catalog.CatalogTracker |
40641 | zookeeper.ClientCnxn |
(2) 检查ulimit, /etc/security/limits.conf
此处暂时设置为(假设启动hadoop的用户为admin)
admin - nofile
admin - nproc
8. 启动hadoop
(1) 初次启动之前,在hbase-0上格式化NameNode
$HADOOP_PREFIX/bin/hdfs namenode -format hbase-
在hbase-r上格式化NameNode
$HADOOP_PREFIX/bin/hdfs namenode -format hbase-r
(2) 在hbase-0启动NameNode
$HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode
(3) 分别在hbase-1,hbase-2, hbase-3 上启动DataNode
$HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start datanode
(4) 在hbase-r上启动ResourceManager
$HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager
(5) 在hbase-1, hbase-2, hbase-3上启动NodeManager
$HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start nodemanager
(6) 在hbase-r上启动Yarn的WebAppProxy Server
$HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver --config $HADOOP_CONF_DIR
(7) 在hbase-r上启动MapReduce JobHistory Server
$HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh start historyserver --config $HADOOP_CONF_DIR
9. 停止hadoop
(1) hbase-0上停止NameNode
$HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop namenode
(2) 分别在hbase-1,hbase-2, hbase-3 上停止DataNode
$HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode
(3) 在hbase-r上停止ResourceManager
$HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop resourcemanager
(4) 在hbase-1, hbase-2, hbase-3上停止NodeManager
$HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop nodemanager
(5) 在hbase-r上停止Yarn的WebAppProxy Server
$HADOOP_YARN_HOME/sbin/yarn-daemon.sh stop proxyserver --config $HADOOP_CONF_DIR
(6) 在hbase-r上停止MapReduce JobHistory Server
$HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh stop historyserver --config $HADOOP_CONF_DIR
10. 启动zookeeper
(1) 在所有机器上启动zookeeper
$ZOOKEEPER_HOME/bin/zkServer.sh start
(2) 在各台机器上确认启动状态
$ZOOKEEPER_HOME/bin/zkServer.sh status
JMX enabled by default
Using config: /hbase/zookeeper/bin/../conf/zoo.cfg
Mode: leader
其中Mode:leader应该只有1个,其他的都是Mode: follower
11. 启动hbase
(1) 在hbase-0上启动hbase。按照文档中的描述,会按照ZooKeeper、Master、RegionServers、Backup masters的顺序启动。
$HBASE_HOME/bin/start-hbase.sh
(2) 在各个结点上执行 jps指令,确认启动状况
hbase-0:
$ jps
NameNode
Bootstrap
QuorumPeerMain
HMaster
Jps
Bootstrap
hbase-r:
$ jps
ResourceManager
Bootstrap
Bootstrap
JobHistoryServer
Jps
QuorumPeerMain
hbase-1:
$ jps
HRegionServer
DataNode
Bootstrap
QuorumPeerMain
Bootstrap
Jps
10876 NodeManager
hbase-2:
$ jps
HRegionServer
DataNode
QuorumPeerMain
Jps
28873 NodeManager
hbase-3:
$ jps
Jps
HRegionServer
Bootstrap
NodeManager
DataNode
QuorumPeerMain
Bootstrap
可以看到,
hadoop:1个NameNode, 3个DataNode,3个NodeManager,1个ResourceManager, 1个JobHistoryServer
hbase:1个HMaster,3个RegionServer,
5个ZooKeeper,
全部启动完成了。
(2) 停止hbase
$HBASE_HOME/bin/stop-hbase.sh
12. 一些基本的测试
(1) Snappy压缩测试
$ $HBASE_HOME/bin/hbase shell
> create 'test1', { NAME => 'cf1', COMPRESSION => 'SNAPPY' }
> put 'test1', 'row1', 'cf1:a', 'value1'
> scan 'test1'
ROW COLUMN+CELL
row1 column=cf1:a, timestamp=, value=value1
row(s) in 0.0370 seconds
(2) 去hadoop看刚才创建的记录
$HADOOP_PREFIX/bin/hdfs dfs -ls /hbase/data/default/test1/
drwxr-xr-x - admin supergroup 0 2014-10-28 15:07 /hbase/data/default/test1/.tabledesc
drwxr-xr-x - admin supergroup 0 2014-10-28 15:07 /hbase/data/default/test1/.tmp
drwxr-xr-x - admin supergroup 0 2014-10-28 15:07 /hbase/data/default/test1/003d38c6f213f8c589eea5065785ce57
(3) 浏览器访问hbase-0:50070/,通过管理界面可以看到Live Nodes: 3
(4) 浏览器访问hbase-0:16010/,通过管理界面可以看到Region Servers 一共3台: hbase-1, hbase-2, hbase-3全部运行中。
13. 为了方便,把启动和停止做成了2个脚本(启动所有的hadoop, zookeeper, hbase)。
(1) 启动
ssh hbase- $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode
ssh hbase- $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start datanode
ssh hbase- $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start datanode
ssh hbase- $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start datanode
ssh hbase-r $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager
ssh hbase- $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start nodemanager
ssh hbase- $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start nodemanager
ssh hbase- $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start nodemanager
ssh hbase-r $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver --config $HADOOP_CONF_DIR
ssh hbase-r $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh start historyserver --config $HADOOP_CONF_DIR
ssh hbase- $ZOOKEEPER_HOME/bin/zkServer.sh start
ssh hbase-r $ZOOKEEPER_HOME/bin/zkServer.sh start
ssh hbase- $ZOOKEEPER_HOME/bin/zkServer.sh start
ssh hbase- $ZOOKEEPER_HOME/bin/zkServer.sh start
ssh hbase- $ZOOKEEPER_HOME/bin/zkServer.sh start
ssh hbase- $HBASE_HOME/bin/start-hbase.sh
(2) 停止
ssh hbase- $HBASE_HOME/bin/stop-hbase.sh
ssh hbase- $ZOOKEEPER_HOME/bin/zkServer.sh stop
ssh hbase-r $ZOOKEEPER_HOME/bin/zkServer.sh stop
ssh hbase- $ZOOKEEPER_HOME/bin/zkServer.sh stop
ssh hbase- $ZOOKEEPER_HOME/bin/zkServer.sh stop
ssh hbase- $ZOOKEEPER_HOME/bin/zkServer.sh stop
ssh hbase- $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop namenode
ssh hbase- $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode
ssh hbase- $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode
ssh hbase- $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode
ssh hbase-r $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop resourcemanager
ssh hbase- $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop nodemanager
ssh hbase- $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop nodemanager
ssh hbase- $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop nodemanager
ssh hbase-r $HADOOP_YARN_HOME/sbin/yarn-daemon.sh stop proxyserver --config $HADOOP_CONF_DIR
ssh hbase-r $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh stop historyserver --config $HADOOP_CONF_DIR
-------------------------------------- 结束 -----------------------------------------
此次部署过程遇到了各种各样的错误,通过查看启动日志,搜索其他人的博文,最终成功安装上去了。希望本文能为后来者省点时间,也为下次自己再次部署的时候作为参考。
hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)的更多相关文章
- Webpack4 学习笔记八 开发环境和生产环境配置
webpack resolve属性 webpack 区分开发环境和生产环境 webpack resolve属性 该选项的作用是设置模块如何被解析. resolve.alias: 设置别名, 在vue中 ...
- CentOS6.5环境配置笔记
CentOS6.5环境配置笔记 一.概述 服务器系统重装,配置应用运行环境 CentOS6.5 x64 二.修改密码 重新设置登录密码 $passwd 或 $passwd root 三.配置端口号及防 ...
- webpack开发环境配置和生产环境配置
开发环境配置 在开发环境下,我们首先考虑的是方便开发,方便代码调试,不需要考虑代码合并和css样式分离这些. 这里主要说三个 :1.css模块化:2.模块热替换功能:3.source-map(代码映射 ...
- webpack深入场景——开发环境和生产环境配置
以前自己写一小项目时,webpack的配置基本就是一套配置,没有考虑生产环境和开发环境的区分,最近在做一个复杂的商城项目接触到了webpack的高级配置,经过两天的研究,写出了一份目前来说比叫满意的配 ...
- webpack根据开发与生产环境配置不同变量--webpack.DefinePlugin
webpack有一个DefinePlugin接口,可以实现根据开发与生产环境配置不同变量.范例如下: 需求:开发环境请求baseUrl = '':生产环境请求 baseUrl = 'http://lo ...
- 记录自己的 django管理 开发环境 和 生产环境 配置过程
背景:自己的博客部署到服务器了,可每次上传服务器都要把配置重新该,包括数据库链接也得改,于是就需要管理开发环境和生产环境配置. 1, 这是目录结构,在blog下新建一个settings包,里面新建有c ...
- anaconda + VSCode + 生产环境配置
1. 修改jupyter notebook 默认路径: 进入anaconda 命令行, jupyter notebook --generate-config 生成配置文件, 该文件在 本机用 ...
- Ubuntu虚拟机+ROS+Android开发环境配置笔记
Ubuntu虚拟机+ROS+Android开发环境配置笔记 虚拟机设置: 1.本地环境:Windows 7:VMWare:联网 2.虚拟环境 :Ubuntu 14.04. 比較稳定,且支持非常多ROS ...
- vue开发环境和生产环境配置
开发环境配置 一般情况下开发环境是会跨域的,所以我们只需要在跨域的位置配置即可.进入config/index.js,在proxyTable对象里面添加代码,如下 '/api': { target: ' ...
随机推荐
- fzuoj Problem 2177 ytaaa
http://acm.fzu.edu.cn/problem.php?pid=2177 Problem 2177 ytaaa Accept: 113 Submit: 265Time Limit: ...
- JSP文件编码
1. pageEncoding: <%@ page pageEncoding="UTF-8"%> jsp页面编码: jsp文件本身的编码 2. contentType: ...
- Android中实现app版本更新
1,获取本地程序apk版本,并开启服务(下面这段代码一般在主Activity中的onCreate()方法中执行的,并开启后台服务下载新版本的apk) //获取apk包文件的管理者对象 PackageM ...
- Java魔法堂:注释和注释模板 (转)
http://www.cnblogs.com/fsjohnhuang/p/3988883.html 一.注释 1. 注释类型 [a]. 单行注释 // 单行注释 String type = &qu ...
- PAT乙级 1010. 一元多项式求导 (25)
1010. 一元多项式求导 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 设计函数求一元多项式的导数.(注:xn(n为整数)的一 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON RegionToBin2
zw版[转发·台湾nvp系列Delphi例程]HALCON RegionToBin2 unit Unit1;interfaceuses Windows, Messages, SysUtils, Var ...
- Arm环境搭建-基于博创科技(CentOS7.0系统安装篇1)
CentOs 7.0安装和基本命令篇 目的:学习基本的linux命令,熟悉linux操作系统,安装linux.(安装过5.5,6.3并不是安装一帆风顺的,多次安装,有个10次多吧,基本会 ...
- NOIP201205Vigenère密码
NOIP201205Vigenère密码 [问题描述] 16 世纪法国外交家Blaise de Vigenère设计了一种多表密码加密 ...
- 查看linux僵尸进程
top ps -A -o stat,ppid,pid,cmd | grep -e '^[zZ]' kill -HUP 进程号
- Add baidu map in your website (wordpress)
手动挡 访问应用(AK)Key http://lbsyun.baidu.com/apiconsole/key Basic Map Generator http://api.map.baidu.com/ ...