阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS下Hadoop+Hbase+ZooKeeper分布式存储部署详解

203次阅读
没有评论

共计 11889 个字符,预计需要花费 30 分钟才能阅读完成。

前言:Hadoop 是 Apache 开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、Facebook 和 Yahoo 等等。对于我来说,最近的一个使用点就是服务集成平台的日志分析。服务集成平台的日志量将会很大,而这也正好符合了分布式计算的适用场景(日志分析和索引建立就是两大应用场景)。

今天我们来实际搭建一下 Hadoop 2.2.0 版,实战环境为目前主流服务器操作系统 CentOS 6.5 系统。

一、实战环境

系统版本:CentOS 6.5 x86_64
JAVA 版本:JDK-1.7.0_25
Hadoop 版本:hadoop-2.2.0
192.168.172.59  namenode(充当 namenode、secondary namenode 和 ResourceManager 角色)
192.168.172.88  datanode1(充当 datanode、nodemanager 角色)
192.168.172.89  datanode2(充当 datanode、nodemanager 角色)

二、系统准备

1)Hadoop 可以从 Apache 官方网站直接下载最新版本 Hadoop2.2。官方目前是提供了 linux32 位系统可执行文件,所以如果需要在 64 位系统上部署则需要单独下载 src 源码自行编译。(如果是真实线上环境,请下载 64 位 hadoop 版本,这样可以避免很多问题,这里我实验采用的是 32 位版本)

Hadoop 下载地址
http://apache.claz.org/hadoop/common/hadoop-2.2.0/
Java 下载下载
http://www.Oracle.com/technetwork/java/javase/downloads/index.html

2)我们这里采用三台 CnetOS 服务器来搭建 Hadoop 集群,分别的角色如上已经注明。

第一步:我们需要在三台服务器的 /etc/hosts 里面设置对应的主机名如下(真实环境可以使用内网 DNS 解析)

[root@node1 hadoop]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.172.59  node1
192.168.172.88  node2
192.168.172.89  node3(注 * 我们需要在 namenode、datanode 三台服务器上都配置 hosts 解析)

3)从 namenode 上无密码登陆各台 datanode 服务器,需要做如下配置:

在 namenode 128 上执行 ssh-keygen,一路 Enter 回车即可。
然后把公钥 /root/.ssh/id_rsa.pub 拷贝到 datanode 服务器即可,拷贝方法如下:
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.172.88
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.172.89

三、Java 安装配置

tar  -xvzf  jdk-7u25-linux-x64.tar.gz &&mkdir -p  /usr/java/  ; mv  /jdk1.7.0_25    /usr/java/ 即可。
安装完毕并配置 java 环境变量,在 /etc/profile 末尾添加如下代码:
export JAVA_HOME=/usr/java/jdk1.7.0_25/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVE_HOME/lib/dt.jar:$JAVE_HOME/lib/tools.jar:./

保存退出即可,然后执行 source  /etc/profile 生效。在命令行执行 java -version 如下代表 JAVA 安装成功。

[root@node1 ~]# java -version
java version “1.7.0_25”
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

(注 * 我们需要在 namenode、datanode 三台服务器上都安装 Java JDK 版本)

四、Hadoop 版本安装

官方下载的 hadoop2.2.0 版本,不用编译直接解压安装就可以使用了,如下:

1)解压:

tar  -xzvf  hadoop-2.2.0.tar.gz &&mv hadoop-2.2.0  /data/hadoop/
(注 * 先在 namenode 服务器上都安装 hadoop 版本即可,datanode 先不用安装,待会修改完配置后统一安装 datanode)2)配置变量:

在 /etc/profile 末尾继续添加如下代码,并执行 source /etc/profile 生效。
export HADOOP_HOME=/data/hadoop/
export PATH=$PATH:$HADOOP_HOME/bin/
export JAVA_LIBRARY_PATH=/data/hadoop/lib/native/
(注 * 我们需要在 namenode、datanode 三台服务器上都配置 Hadoop 相关变量)

五、配置 Hadoop

在 namenode 上配置,我们需要修改如下几个地方:

1)修改 vi/data/hadoop/etc/hadoop/core-site.xml 内容为如下:

<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”https://www.linuxidc.com/Linux/2017-02/configuration.xsl”?>
<!– Put site-specific property overrides in this file. –>
<configuration>
<property>
  <name>fs.default.name</name>
  <value>hdfs://node1:9000</value>
 </property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/tmp/hadoop-${user.name}</value>
  <description>A base for other temporary directories.</description>
</property>
</configuration>

2)修改 vi/data/hadoop/etc/hadoop/mapred-site.xml 内容为如下:

<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”https://www.linuxidc.com/Linux/2017-02/configuration.xsl”?>
<!– Put site-specific property overrides in this file. –>
    <configuration>
    <property>
      <name>mapred.job.tracker</name>
      <value>node1:9001</value>
    </property>
</configuration>

3)修改 vi/data/hadoop/etc/hadoop/hdfs-site.xml 内容为如下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<?xml-stylesheet type=”text/xsl” href=”https://www.linuxidc.com/Linux/2017-02/configuration.xsl”?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/data_name1,/data/hadoop/data_name2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/data_1,/data/hadoop/data_2</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

4)在 /data/hadoop/etc/hadoop/hadoop-env.sh 文件末尾追加 JAV_HOME 变量:

echo “export JAVA_HOME=/usr/java/jdk1.7.0_25/” >> /data/hadoop/etc/hadoop/hadoop-env.sh

5)修改 vi /data/hadoop/etc/hadoop/masters 文件内容为如下:

node1

6)修改 vi/data/hadoop/etc/hadoop/slaves 文件内容为如下:

node2
node3

如上配置完毕,以上的配置具体含义在这里就不做过多的解释了,搭建的时候不明白,可以查看一下相关的官方文档。

如上 namenode 就基本搭建完毕,接下来我们需要部署 datanode,部署 datanode 相对简单,执行如下操作即可。

for  i  in  `seq 88 89 ` ; do scp -r  /data/hadoop/  root@192.168.172.$i:/data/  ; done

自此整个集群基本搭建完毕,接下来就是启动 hadoop 集群了。

六、启动 hadoop 并测试

在启动 hadoop 之前,我们需要做一步非常关键的步骤,需要在 namenode 上执行如下命令初始化 name 目录和数据目录。

cd  /data/hadoop/ ; ./bin/hadoop namenode -format

那如何算初始化成功呢,如下截图成功创建 name 目录即正常:

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

然后启动 hadoop 所有服务,如下命令:

[root@node1 hadoop]# ./sbin/start-all.sh

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

我们还可以查看相应的端口是否启动:netstat -ntpl

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

访问如下地址:http://192.168.172.59:50070/

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

访问地址:http://192.168.172.59:8088/

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

搭建完成后,我们简单的实际操作一下,如下图:

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

自此 hadoop 基本搭建完毕。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-02/140995p2.htm

七、部署 ZooKeeper 服务

在 node1 上配置:

下载 zookeeper3.4.6 版本:

wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -xzfzookeeper-3.4.6.tar.gz  -C  /export/servers/

#vim  /export/servers/ zookeeper-3.4.6/conf/zoo.cfg 写入如下内容:

# 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=/export/zookeeper
# the port at which the clients will connect
clientPort=2181
initLimit=5
syncLimit=2
dataLogDir=/export/zookeeper/logs
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

注意:zk 里面的 node 节点名称要一一对应哦,然后创建 zk 数据目录和日志路径:

mkdir  -p  /export/zookeeper/logs
echo  1  >/export/zookeeper/myid

如上在 node1 上配置好 zk 后,把 zk 整个程序同步到另外两台 node2、node3。

执行如下脚本:

for  i in  `seq 88 89` ; do rsync -aP–delete /export/servers/zookeeper-3.4.6/ root@192.168.172.$i:/export/servers/zookeeper-3.4.6/;rsync-av  /export/zookeeper/  root@192.168.172.$i:/export/; done

然后分别修改 node2、node3 的 myid 为 2 和 3,命令如下:

在 node2 上执行:

echo  2  >/export/zookeeper/myid

在 node3 上执行:

echo  3  >/export/zookeeper/myid

执行完后,分别启动三台服务器的 zk 服务:

cd/export/servers/zookeeper-3.4.6/ ;./bin/zkServer.sh start

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

如上配置,zookeeper 配置完毕。

八、部署 Hbase 服务

在 node1 上配置:

下载软件:hbase-0.96.2-Hadoop2.tar.gz,然后执行如下命令:
tarxf hbase-0.96.2-hadoop2.tar.gz ;mv hbase-0.96.2-hadoop2 /export/hbase
然后进入 hbase 配置文件目录,如下图:
cd/export/hbase/conf/

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

vim hbase-site.xml 内容如下:

<configuration>
  <property>
          <name>hbase.tmp.dir</name>
          <value>/export/hbase/tmp</value>
        </property>
           
<property>
  <name>zookeeper.session.timeout</name>
    <value>3600000</value>
</property>
<property>
  <name>hbase.zookeeper.property.tickTime</name>
    <value>180000</value>
</property>
        <property>
          <name>hbase.rootdir</name>
          <value>hdfs://node1:9000/hbase</value>
        </property>
        <property>
          <name>hbase.cluster.distributed</name>
            <value>true</value>
        </property>
<property>
          <name>hbase.zookeeper.quorum</name>
          <value>node1,node2,node3</value>
</property>
<!– 禁止 magor compaction–>
<property>
<name>hbase.hregion.majorcompaction</name>
<value>0</value>
</property>
<!– 禁止 split–>
 <property>
 <name>hbase.hregion.max.filesize</name>
  <value>536870912000</value>
 </property>
 <!—->
 <property>
 <name>hbase.hstore.blockingStoreFiles</name>
 <value>2100000000</value>
 </property>
 <property>
 <name>hbase.regionserver.handler.count</name>
 <value>100</value>
 </property>
</configuration>

vim hbase-env.sh 内容如下:

exportJAVA_HOME=/export/servers/jdk1.6.0_25/
exportHBASE_OPTS=”-XX:+UseConcMarkSweepGC”
exportHBASE_MANAGES_ZK=false
exportHADOOP_HOME=/export/hadoop/

vim regionservers 内容如下:

node2
node3

然后将 node1 habse 配置同步至 node2、node3:

for  i in  `seq 88 89` ; do rsync -av  /export/hbase/  root@192.168.172.$i:/export/  ; done

最好在 node1 启动整个集群 hbase 即可:

cd /export/hbase/;shbin/start-hbase.sh

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

查看 node1 JAVA 进程信息如下:

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

最好查看 hbase 日志如下:

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

通过 web 查看 hbase 截图如下:

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

NODE2 状态:

———————————————————–

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/140995.htm

前言:Hadoop 是 Apache 开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、Facebook 和 Yahoo 等等。对于我来说,最近的一个使用点就是服务集成平台的日志分析。服务集成平台的日志量将会很大,而这也正好符合了分布式计算的适用场景(日志分析和索引建立就是两大应用场景)。

今天我们来实际搭建一下 Hadoop 2.2.0 版,实战环境为目前主流服务器操作系统 CentOS 6.5 系统。

一、实战环境

系统版本:CentOS 6.5 x86_64
JAVA 版本:JDK-1.7.0_25
Hadoop 版本:hadoop-2.2.0
192.168.172.59  namenode(充当 namenode、secondary namenode 和 ResourceManager 角色)
192.168.172.88  datanode1(充当 datanode、nodemanager 角色)
192.168.172.89  datanode2(充当 datanode、nodemanager 角色)

二、系统准备

1)Hadoop 可以从 Apache 官方网站直接下载最新版本 Hadoop2.2。官方目前是提供了 linux32 位系统可执行文件,所以如果需要在 64 位系统上部署则需要单独下载 src 源码自行编译。(如果是真实线上环境,请下载 64 位 hadoop 版本,这样可以避免很多问题,这里我实验采用的是 32 位版本)

Hadoop 下载地址
http://apache.claz.org/hadoop/common/hadoop-2.2.0/
Java 下载下载
http://www.Oracle.com/technetwork/java/javase/downloads/index.html

2)我们这里采用三台 CnetOS 服务器来搭建 Hadoop 集群,分别的角色如上已经注明。

第一步:我们需要在三台服务器的 /etc/hosts 里面设置对应的主机名如下(真实环境可以使用内网 DNS 解析)

[root@node1 hadoop]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.172.59  node1
192.168.172.88  node2
192.168.172.89  node3(注 * 我们需要在 namenode、datanode 三台服务器上都配置 hosts 解析)

3)从 namenode 上无密码登陆各台 datanode 服务器,需要做如下配置:

在 namenode 128 上执行 ssh-keygen,一路 Enter 回车即可。
然后把公钥 /root/.ssh/id_rsa.pub 拷贝到 datanode 服务器即可,拷贝方法如下:
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.172.88
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.172.89

三、Java 安装配置

tar  -xvzf  jdk-7u25-linux-x64.tar.gz &&mkdir -p  /usr/java/  ; mv  /jdk1.7.0_25    /usr/java/ 即可。
安装完毕并配置 java 环境变量,在 /etc/profile 末尾添加如下代码:
export JAVA_HOME=/usr/java/jdk1.7.0_25/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVE_HOME/lib/dt.jar:$JAVE_HOME/lib/tools.jar:./

保存退出即可,然后执行 source  /etc/profile 生效。在命令行执行 java -version 如下代表 JAVA 安装成功。

[root@node1 ~]# java -version
java version “1.7.0_25”
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

(注 * 我们需要在 namenode、datanode 三台服务器上都安装 Java JDK 版本)

四、Hadoop 版本安装

官方下载的 hadoop2.2.0 版本,不用编译直接解压安装就可以使用了,如下:

1)解压:

tar  -xzvf  hadoop-2.2.0.tar.gz &&mv hadoop-2.2.0  /data/hadoop/
(注 * 先在 namenode 服务器上都安装 hadoop 版本即可,datanode 先不用安装,待会修改完配置后统一安装 datanode)2)配置变量:

在 /etc/profile 末尾继续添加如下代码,并执行 source /etc/profile 生效。
export HADOOP_HOME=/data/hadoop/
export PATH=$PATH:$HADOOP_HOME/bin/
export JAVA_LIBRARY_PATH=/data/hadoop/lib/native/
(注 * 我们需要在 namenode、datanode 三台服务器上都配置 Hadoop 相关变量)

五、配置 Hadoop

在 namenode 上配置,我们需要修改如下几个地方:

1)修改 vi/data/hadoop/etc/hadoop/core-site.xml 内容为如下:

<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”https://www.linuxidc.com/Linux/2017-02/configuration.xsl”?>
<!– Put site-specific property overrides in this file. –>
<configuration>
<property>
  <name>fs.default.name</name>
  <value>hdfs://node1:9000</value>
 </property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/tmp/hadoop-${user.name}</value>
  <description>A base for other temporary directories.</description>
</property>
</configuration>

2)修改 vi/data/hadoop/etc/hadoop/mapred-site.xml 内容为如下:

<?xml version=”1.0″?>
<?xml-stylesheet type=”text/xsl” href=”https://www.linuxidc.com/Linux/2017-02/configuration.xsl”?>
<!– Put site-specific property overrides in this file. –>
    <configuration>
    <property>
      <name>mapred.job.tracker</name>
      <value>node1:9001</value>
    </property>
</configuration>

3)修改 vi/data/hadoop/etc/hadoop/hdfs-site.xml 内容为如下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<?xml-stylesheet type=”text/xsl” href=”https://www.linuxidc.com/Linux/2017-02/configuration.xsl”?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/data_name1,/data/hadoop/data_name2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/data_1,/data/hadoop/data_2</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

4)在 /data/hadoop/etc/hadoop/hadoop-env.sh 文件末尾追加 JAV_HOME 变量:

echo “export JAVA_HOME=/usr/java/jdk1.7.0_25/” >> /data/hadoop/etc/hadoop/hadoop-env.sh

5)修改 vi /data/hadoop/etc/hadoop/masters 文件内容为如下:

node1

6)修改 vi/data/hadoop/etc/hadoop/slaves 文件内容为如下:

node2
node3

如上配置完毕,以上的配置具体含义在这里就不做过多的解释了,搭建的时候不明白,可以查看一下相关的官方文档。

如上 namenode 就基本搭建完毕,接下来我们需要部署 datanode,部署 datanode 相对简单,执行如下操作即可。

for  i  in  `seq 88 89 ` ; do scp -r  /data/hadoop/  root@192.168.172.$i:/data/  ; done

自此整个集群基本搭建完毕,接下来就是启动 hadoop 集群了。

六、启动 hadoop 并测试

在启动 hadoop 之前,我们需要做一步非常关键的步骤,需要在 namenode 上执行如下命令初始化 name 目录和数据目录。

cd  /data/hadoop/ ; ./bin/hadoop namenode -format

那如何算初始化成功呢,如下截图成功创建 name 目录即正常:

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

然后启动 hadoop 所有服务,如下命令:

[root@node1 hadoop]# ./sbin/start-all.sh

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

我们还可以查看相应的端口是否启动:netstat -ntpl

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

访问如下地址:http://192.168.172.59:50070/

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

访问地址:http://192.168.172.59:8088/

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

搭建完成后,我们简单的实际操作一下,如下图:

CentOS 下 Hadoop+Hbase+ZooKeeper 分布式存储部署详解

自此 hadoop 基本搭建完毕。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-02/140995p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计11889字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中