CentOS+Hadoop+Zookeeper+HBase安装配置

这篇博客介绍了在CentOS 6.5环境下,如何安装配置Hadoop 2.5.2、Zookeeper 3.4.6和HBase 0.99.2。包括系统配置、SSH公钥设置、Hadoop、Zookeeper和HBase的详细安装步骤,以及启动和检查运行状态的方法。
摘要由CSDN通过智能技术生成

实验用集群由3台虚拟机组成

一、环境和软件版本:

CentOS 6.5 64位操作系统

Hadoop 2.5.2

Zookeeper 3.4.6

HBase 0.99.2

二、系统配置

1.iptables

默认CentOS会启动iptables以保证网络安全,需要关闭。

$ sudo service iptables stop

同时,将配置去掉

# setup

在终端界面中,将防火墙配置(Firewall Configuration)中的启用状态取消。

2./etc/sysconfig/network

修改HOSTNAME字段为合适的主机名,如hadoop1,hadoop2等。

 也有的系统使用/etc/hostname这个文件。 

修改后需要重启。或者用hostname命令直接修改。

3./etc/hosts

$ sudo vi /etc/hosts

将127.0.0.1指向主机名的一行删除:

127.0.0.1 hadoopX

X为具体的节点编号。否则会和后边添加的指向发生冲突。

然后在末尾添加以下内容(示例),使机器可以直接通过主机名访问IP。

192.168.16.240 hadoop1

192.168.16.241 hadoop2

192.168.16.242 hadoop3

4.SSH公钥

在每台计算机配置公钥,使用默认配置即可:

$ ssh-keygen

5.SSH互通

注意:此步骤很重要,务必确保从每台计算机都可以无密码的ssh连通任意节点,否则可能在启动Hadoop时会发生异常。如果配置完成后仍然无法直通,则将所有主机的~/.ssh目录下文件都删除,重新执行ssh-keygen命令生成公钥私钥,再重新逐一复制、合并、下发。

以4台服务器的互通为例,在NameNode上执行以下操作,确保从NameNode可以ssh直通各节点。

$ cd ~/.ssh 
$ scp hadoop@192.168.16.241:/home/hadoop/.ssh/id_rsa.pub ./k1 
$ scp hadoop@192.168.16.242:/home/hadoop/.ssh/id_rsa.pub ./k2 
$ scp hadoop@192.168.16.243:/home/hadoop/.ssh/id_rsa.pub ./k3

然后将收集的公钥合并:
$ cat k1 >> authorized_keys 
$ cat k2 >> authorized_keys 
$ cat k3 >> authorized_keys
然后执行以下命令:
$ ssh hadoop1 
$ ssh hadoop2 
$ ssh hadoop3
以上操作确保在known_hosts文件中都有各个主机,首次连接需要输入yes确认,之后每次执行上述ssh命令应当不用输入密码。
然后将authorized_keys和known_hosts下发到每个节点上:
$ scp authorized_keys hadoop@192.168.16.241:/home/hadoop/.ssh 
$ scp authorized_keys hadoop@192.168.16.242:/home/hadoop/.ssh 
$ scp authorized_keys hadoop@192.168.16.243:/home/hadoop/.ssh
known_hosts文件:
$ scp known_hosts hadoop@192.168.16.241:/home/hadoop/.ssh 
$ scp known_hosts hadoop@192.168.16.242:/home/hadoop/.ssh 
$ scp known_hosts hadoop@192.168.16.243:/home/hadoop/.ssh
三、Hadoop2.5.2
1.文件放置

建议将Hadoop安装在/opt下

$ tar xzvf hadoop-2.5.2.tar.gz 
$ mv hadoop-2.5.2 /opt

然后建议使用软连接:

$ ln -s /opt/hadoop-2.5.2 /opt/hadoop
创建Hadoop的数据存储目录
$ sudo mkdir /hadoop 
$ mkdir /hadoop/dfs 
$ mkdir /hadoop/tmp 
$ mkdir /hadoop/mapred
2.环境变量

在/etc/profile的末尾加入:

export HADOOP_HOME=/opt/hadoop 
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
确保可以在任意位置执行hadoop命令。 然后将配置文件启用:
$ source /etc/profile

3.配置文件
默认的配置无法直接启动,需要对部分参数进行修改。
修改/opt/hadoop/etc/hadoop/slaves文件,加入DataNode的IP地址,类似:
192.168.4.242

192.168.4.243

修改/opt/hadoop/etc/hadoop/hadoop-env.sh文件,将默认的JAVA_HOME修改为:

export JAVA_HOME=/opt/jdk1.7.0_45
修改/opt/hadoop/etc/hadoop/core-site.xml文件,在<configuration>标签中(即嵌套在该标签中)加入以下内容:

<property>
  <name>hadoop.tmp.dir</name>
  <value>/hadoop/tmp</value>
  <description>temporary directories.</description>
</property>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://xxx.xxx.xxx.xxx:9000</value>
  <description>The name of the defaultfile system. Either the literal string "local" or a host:port forNDFS.
  </description>
  <final>true</final>
</property>

修改hdfs-site.xml,在<configuration>标签中(即嵌套在该标签中)加入以下内容:

<property> 
    <name>dfs.namenode.name.dir</name> 
    <value>file:/hadoop/dfs/name</value> 
    <description>Determineswhere on the local filesystem the DFS name node should store the name table.</description> 
    <final>true</final> 
</property> 
<property> 
    <name>dfs.datanode.data.dir</name> 
    <value>file:/hadoop/dfs/data</value> 
    <description>Determineswhere on the local filesystem an DFS data node should store its blocks. </description> 
    <final>true</final> 
</property> 
<property> 
    <name>dfs.replication</name> 
    <value>1</value> 
</property> 
<property> 
    <name>dfs.permissions</name> 
    <value>false</value> 
</property>
默认不存在mapred-site.xml,需要创建
$ cp mapred-site.xml.template mapred-site.xml 
$ vim mapred-site.xml

在<configuration>标签中(即嵌套在该标签中)加入以下内容:

<property> 
    <name>mapreduce.framework.name</name> 
    <value>yarn</value> 
</property> 
<property> 
    <name>mapred.system.dir</name> 
    <value>file:/hadoop/mapred/system</value> 
    <final>true</final> 
</property> 
<property> 
    <name>mapred.local.dir</name> 
    <value>file:/hadoop/mapred/local</value> 
    <final>true</final> 
</property>
修改yarn-site.xml,在<configuration>标签中(即嵌套在该标签中)加入以下内容:
<property>
  <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
      <description>shuffle service that needsto be set for Map Reduce to run </description>
      </property>
<property>
  <name>yarn.resourcemanager.hostname</name>
    <value>192.168.16.241</value>
      <description>hostanem of RM</description>
      </property>
yarn.resourcemanager.hostname配置后,其他端口号将使用默认,不需要单独再重新配置。192.168.16.241是NameNode的IP。

4.DataNode安装

NameNode配置完成后,在每个DataNode节点上重复3.1和3.2节的路径配置与全局变量修改。修改完成后,将/opt/hadoop复制到其他计算机上即可:

$ scp -r /opt/hadoop-2.5.2 hadoop2:/opt/ 
$ scp -r /opt/hadoop-2.5.2 hadoop3:/opt/

5.NameNode格式化

首先需要格式化namenode,在NameNode上执行:

$ hdfs namenode –format
如果不是第一次执行,则需要根据提示输入大写Y继续。
6.启动HDFS
$ start-dfs.sh
停止使用:
$ stop-dfs.sh
有时候无法停止,请使用kill -9来结束jps中显示的hadoop相关进程。
7.运行状态观察

访问http://192.168.16.241:50070/看到Overview界面

四、Zookeeper

zookeeper建议安装在奇数个节点上, zookeeper不存在NameNode这样的特殊节点,所以每个服务器上的配置是基本相同的,只有一个myid不一样。

1.zookeeper文件夹

以hadoop1服务器配置为例:

$ tar xvf zookeeper-3.4.6.tar.gz 
$ sudo mv zookeeper-3.4.6 /opt 
$ ln -s /opt/zookeeper-3.4.6 /opt/zookeeper
进入zookeeper文件夹,并建立data,datalog,logs文件夹:

2.参数配置

$ cd /opt/zookeeper 
$ mkdir data 
$ mkdir datalog 
$ mkdir logs

进入zookeeper的conf文件夹,将示例配置文件复制一个进行修改。仔细看配置文件zoo.cfg,不要删除默认的配置。在默认基础之上,修改dataDir和dataLogDir,并增加节点文件,使之未注释的部分像如下的示例:

tickTime=2000
initLimit=10
gement
syncLimit=5
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/datalog
clientPort=2181
autopurge.snapRetainCount=5
autopurge.purgeInterval=1
server.1=yqhadoop1:2888:3888
server.2=yqhadoop2:2888:3888
server.3=yqhadoop3:2888:3888
需要将所有的子节点都配置进去。hadoopX表示了主机名。server.X表示一个内部编号,和之后写入myid文件的相同。
另外,ZooKeeper的默认配置不会删除日志和快照,所以需要配置一下,在conf/zoo.cfg中,取消autopurge.snapRetainCount的注释,并修改:
autopurge.snapRetainCount=5
这个值建议比3大,比如设置为5 取消autopurge.purgeInterval的注释,采用默认值1(表示每1小时清理一次快照):
autopurge.purgeInterval=1
/opt/zookeeper/data/myid文件默认不存在,需要创建
内容填写1即可,其他主机填写自身的编号。

3.日志管理

ZooKeeper提供了log4j的配置文件,为了自动管理,需要按照日期进行配置。 

注意:如果不配置日志位置,则默认会将日志存为zookeeper.out放在执行zkServer.sh start命令时候的文件夹位置。

log4j可以配置一个按照日期进行分离的日志模式,可以将默认的conf/log4j.properties备份一个,然后用下面这个替换:

# set logger
log4j.rootLogger=DEBUG, CONSOLE, DR
# the CONSOLE config
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
# the dr config
log4j.appender.DR=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DR.Threshold=DEBUG
log4j.appender.DR.File=/opt/zookeeper/logs/zookeeper.log
log4j.appender.DR.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.DR.append=true
log4j.appender.DR.layout=org.apache.log4j.PatternLayout
log4j.appender.DR.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n

在这个配置文件中,共有两个日志输出,一个是CONSOLE也就是控制台可见的,另一个是按照日期会自动分割文件的日志,每天的日志会存放在以之前建立的/opt/zookeeper/logs里,目前设置的log级别为DEBUG,数据较多,一定时间后需要清理。可采用cron定期清理。

4.环境变量

可以选择增加一个环境变量,在/etc/profile中增加如下:

export ZOOKEEPER_HOME=/opt/zookeeper 
export PATH=$PATH:$ZOOKEEPER_HOME/bin

然后进行一下更新:
$ source /etc/profile

5.其他节点

其他节点的配置和主节点是相同的,只要将做好的文件复制过去即可。例如,转移到hadoop2上:

$ scp -r /opt/zookeeper hadoop2:/opt/
每个节点的dataDir(/opt/zookeeper/data)下要建立一个myid的文件,文件内容是该节点的数字编号,如hadoop6就是6,hadoop7就是7。与之前在zoo.cfg中配置的数字一样。

6.启动服务

zookeeper需要在每个节点上启动,可以用ssh命令来远程启动。也可以手工在每个节点上启动。例如在hadoop6上,可以直接执行命令启动zookeeper:

$ zkServer.sh start
然后再将hadoop7,hadoop8上的zookeeper启动。 关闭服务用:
$ zkServer.sh stop

7.运行状态观察

若之前配置正常,则可以在/opt/zookeeper/logs下看到zookeeper.log的日志,使用tail命令保持跟踪,即可观察服务的运行状态:

$ tail -f /opt/zookeeper/logs/zookeeper.log
另外,也可以用jps命令查看: 可以看到QuorumPeerMain的进程,这个进程应当在所有运行ZooKeeper的服务器上都有。

五、HBase

安装完成Hadoop和Zookeeper以后,即可安装HBase。 将生成的文件复制到/opt下并软连接为hbase:

$ mv hbase-0.99.2 /opt/ 
$ ln -s /opt/hbase-0.99.2 /opt/hbase

进入该文件夹,并建立tmp文件夹:
$ cd /opt/hbase 
$ mkdir tmp


1.环境变量

配置一下/etc/profile

export HBASE_HOME=/opt/hbase 
export PATH=$PATH:$HBASE_HOME/bin
配置之后source一下


2.参数配置

到hbase的conf文件夹下,修改配置文件hbase-site.xml,向configuration标签中增加以下内容,xxx.xxx.xxx.xxx的位置均使用IP地址即可,不用使用主机名。

<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.16.241:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>192.168.16.241:60000</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/hbase/tmp</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.16.241,192.168.16.242,192.168.16.243</value>
</property>
配置了HDFS的位置,也就是HBase保存数据的位置,另外是定义了master还有其他节点。另外,zookeeper也要在这里配置,提供上一章节中zookeeper的IP列表即可。

另外,在之前的文档中介绍需要配置hbase-default.xml,在此版本中已经不需要,如果配置了该文件,启动时会发生异常错误。
然后修改hbase-env.sh,修改增加以下内容:

export JAVA_HOME=/opt/jdk1.6.0_33 
export HBASE_HEAPSIZE=2048 
export HBASE_OPTS="-XX:+UseConcMarkSweepGC" 
export HBASE_OPTS="$HBASE_OPTS 
-XX:+HeapDumpOnOutOfMemoryError 
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode" 
export HBASE_MANAGES_ZK=false 
export HBASE_HOME=/opt/hbase 
export HADOOP_HOME=/opt/hadoop
其中HBASE_OPTS的配置项目是可以按照规则修改,但是具体作用需要额外定义。详细的配置参数要在官网文档中找。因为已有的ZooKeeper而不是自带的,所以设置为false。HEAPSIZE设置一下无妨。
然后修改regionservers,增加所有HRegionServer的IP(以下为示例,请根据实际情况配置具体的RegionServer的IP地址):

192.168.16.242
192.168.16.243


3.jar包

1)Hadoop

默认HBase 0.99.2自带的Hadoop包是2.5.1的,所以需要从hadoop的目录中替换相对应的所有jar包。HBase用到的Hadoop包在/opt/hbase/lib中。

Hadoop的包没有集中保存,分别保存在了很多目录,可以使用find命令查找需要的包。另外,hadoop-client-2.5.2.jar这个对应包是没有的,不影响使用。

2)ZooKeeper

默认HBase 0.99.2自带的zookeeper是3.4.6的,所以无须修改。

4.RegionServer节点

Slave的配置和Master是相同的,只要将做好的文件复制过去即可。

$ scp -r /opt/hbase 192.168.1.222:/opt/

另外,其他节点也配置一下/etc/profile

export HBASE_HOME=/opt/hbase 
export PATH=$PATH:$HBASE_HOME/bin

5.启动/关闭服务

启动hbase的服务用以下命令:

$ start-hbase.sh
关闭
$ stop-hbase.sh

6.运行状态观察

当hbase启动后,可以用jps在master和region的服务器上看到如下信息: 对于Master:

33283 HMaster
对于Region:
24833 HRegionServer
使用浏览器http://192.168.16.241:16010简单观察:可以看到HBase的运行状态

7.Thrift服务启动

使用HBase的伺服启动:

$ hbase-daemon.sh start thrift

然后用jps可以检查到ThriftServer

六、基本使用
1.启动步骤

启动HDFS

# start-dfs.sh

启动ZooKeeper

# zkServer.sh start 
# ssh yqhadoop2 /opt/zookeeper/bin/zkServer.sh start 
# ssh yqhadoop3 /opt/zookeeper/bin/zkServer.sh start
启动HBase

# start-hbase.sh

启动Thrift

hbase-daemon.sh start thrift


2.运行检查

在Master上,应能看到如下进程:

[root@hadoop1 ~]# jps
11395 Jps 
10894 QuorumPeerMain 
7360 NameNode 
11059 HMaster 
11325 ThriftServer 
7540 SecondaryNameNode
在Slave上,应能看到如下进程:
[root@hadoop2 ~]# jps 
9043 HRegionServer
8956 QuorumPeerMain 
9266 Jps 
7264 DataNode












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值