hadoop zookeeper hbase的安装、配置

      在Hadoop还未诞生的那个时代,我们一般通过多线程、多任务分解的方式来尽可能的使用计算机资源,最大限度利用计算资源。而在这个大数据 迅速膨胀的今天,显然这样的处理已经不能满足我们的需求,面对互联网越来越多有价值的数据,如何更好的分析这些数据?如何挖掘其中的内 在价值?这时Hadoop作为一个分布式文件系统(Hadoop Distributed File System),简称HDFS应运而生。让使用者在完全不了解其底层实现细节的情况下,完成对 分布式计算应用的开发。HDFS有高容错性的特点,而且可以部署在低廉的硬件上,但是提供高传输率来访问应用程序的数据。

      Hadoop是根据 google公司发表的MapReduce和Google档案系统的论文自行实践而成。Hadoop实现了MapReduce (任务分解与结果汇总)的编程范式,将应用程序分割成许多小部分,而且每个小部分都能在集群中的任意节点上执行或重新执行。HDFS是用做存储所 有的计算节点的数据,为整个带来了非常高的带宽。MapReduce和HDFS的结合,可以使整个框架能很好地自动处理节点故障。 Apache Hadoop平台包括:Hadoop内核、MapReduce、HDFS以及相关的项目。eg,Apache Hive、Apache HBase、ZooKeeper、Avro etc.

    Hadoop的安装非常简单,目前最新的版本2.5.0 release已经发布。大家可以去官网上下载自己喜欢的版本。本文使用的hadoop-1.1.2。

   Hadoop是为了再Linux平台上使用而开发的,当然在windows、UNIX、甚至是Mac OS X 系统上运行也有良好的表现。不过在windows系统上安装就稍显负责一点儿需要安装Cygwin来模拟Linux然后才能安装Hadoop。闲话少说先让我们来看看在Linux如何安装Hadoop吧。

  我们都知道Hadoop是用java编写的,所以在安装Hadoop之前需要做点儿准备工作。

 

   1.我们要先来安装Hadoop编译以及MapReduce运行所必须的JDK。这里推荐安装JDK6.

   2.由于Hadoop运行在一个分布式集群的环境,所以会在多台机器上进行交互 我们需要安装ssh来实现不输入密码通信

 

   搭建hadoop环境

1.修改ip地址

namenode:192.168.134.100

datanode1:192.168.134.101

datanode2:192.168.134.102

    

 我的namenode的ip设置为



 这时候修改完后需要执行一下命令 否则修改不起作用



 

2.修改hostname



 修改相应的位置 保存退出即可。

将hostname与ip绑定



 然后验证一下


3.关闭防火墙 


 

  

4.设置SSH自动登录

创建用户组

groupadd hadoop  添加一个组

useradd hadoop -g hadoop  添加用户

 切换到普通用户下,输入ssh-keygen -t rsa 命令生成公钥和私钥

然后进入/home/hadoop/.ssh目录下  执行cp id_rsa.pub authorized_keys

然后可以尝试ssh 连接hostname(第一次需要输入密码,第二次就不用了)

所谓的SSH的无密码登录就是在master上生成一个公钥和私钥对,然后将公钥复制到slave机器上,当master去ssh slave时,在slave上会生成一个随机数并用master的公钥加密后传给master,然后master用自己的私钥解密后回传给slave 去判断是否一致。

在使用ssh无密码登录时我们需要注意:

1.需要且到root下,修改/etc/ssh/sshd_config修改一下配置



 

2.切到普通用户如hadoop 将.ssh权限设置为700 :chmod 700 .ssh

3.切到普通用户如hadoop  将authorized_keys(公钥) 权限设置为600 chmod 600 authorized_keys

 5.jdk安装

执行mkdir /usr/java  然后通过ssh工具将jdk安装包上传到linux中 我使用的版本为jdk-6u45-linux-x64.bin它是一个自解压文件 安装过程如下

# chmod 755 jdk-6u45-linux-x64.bin

# ./jdk-6u45-linux-x64.bin

然后配置环境变量

# vi /etc/profile

添加以下内容



 然后 修改保存完毕 需要使文件生效  执行命令 source /etc/profile

然后我们可以测试以下



 JDK安装完成。

6.安装tomcat

创建文件夹并上传tomcat安装文件 mkdir /usr/servers 我使用的是apache-tomcat-6.0.39.tar.gz

解压apache-tomcat-6.0.39.tar.gz

# tar -zxvf apache-tomcat-6.0.39.tar.gz

解压OK了 我们可以执行命令  netstat -ano|grep 8080检查8080端口是否被占用 如果没有输出 则未被占用

我们进入apache-tomcat-6.0.39/bin下执行./startup.sh出现如下提示 说明tomcat安装OK了。



 

 

     基本环境我们已经搞定,现在我们的主角hadoop即将登场,我们可以从Apache官网找到hadoop的压缩包,我们需要使用工具将其上传到Linux中,然后解压 过程跟安装tomcat类似。接下来让我们来看看,如何配置hadoop的吧。

     我们首先进入hadoop放置配置文件的文件夹,浏览一下大概内容:



 在这之前切记不能忘了修改 %hadoop_home%/confg/hadoop-env.sh文件的Java_home

否则我们会在启动hadoop中报错 ”[hadoop] Error:JAVA_HOME is not set“

然后我们首先来配置一下core-site.xml文件




 
 

接下来让我们来配置一下文件系统HDFS的配置文件hdfs-site.xml,由于我们只有俩个数据节点所以设置为2(默认值为3)



 

接下来我们要对MapReduce进行配置mapred-site.xml



 最后来配置一下masters(主) 修改成namenode 与上面保持一致,slaves(从)修改为 datanode1 datanode2

然后需要我们将配置好的hadoop 分发给datanode1和datanode2

scp -r /home/hadoop/hadoop-1.1.2 datanode1:/home/hadoop/

scp -r  /home/hadoop/hadoop-1.1.2 datanode2:/home/hadoop/

 现在我们开始来尝试启动hadoop吧:

启动前我们需要对HDFS文件系统进行格式化操作




 
 

然后我们可以尝试启动我们的hadoop了

执行命令./start-all.sh即可

 【遇到的问题】



 

【解决办法】

 修改${hadoop_home}/conf/hadoop-env.sh中的hadoop_pid_dir的内容

【可能遇到的防火墙问题导致hadoop无法启动解决办法】

关闭掉selinux

#/usr/sbin/setenforce 0 立刻关闭selinux

service iptables stop

 

这时我们可以通过 /hadoop hdfsadmin -report来验证一下

[hadoop@master bin]$./hadoop dfsadmin -report

Configured Capacity: 37558796288 (34.98 GB)

Present Capacity: 28923084830 (26.94 GB)

DFS Remaining: 28923027456 (26.94 GB)

DFS Used: 57374 (56.03 KB)

DFS Used%: 0%

Under replicated blocks: 1

Blocks with corrupt replicas: 0

Missing blocks: 0

-------------------------------------------------

Datanodes available: 2 (2 total, 0 dead)

Name: 192.168.134.102:50010

Decommission Status : Normal

Configured Capacity: 18779398144 (17.49 GB)

DFS Used: 28687 (28.01 KB)

Non DFS Used: 4317794289 (4.02 GB)

DFS Remaining: 14461575168(13.47 GB)

DFS Used%: 0%

DFS Remaining%: 77.01%

Last contact: Sat Sep 20 21:15:45 PDT 2014

Name: 192.168.134.101:50010

Decommission Status : Normal

Configured Capacity: 18779398144 (17.49 GB)

DFS Used: 28687 (28.01 KB)

Non DFS Used: 4317917169 (4.02 GB)

DFS Remaining: 14461452288(13.47 GB)

DFS Used%: 0%

DFS Remaining%: 77.01%

Last contact: Sat Sep 20 21:15:45 PDT 2014

 

我们也可以通过hadoop的web管理验证

查看jobtracker状态

http://192.168.134.100:50030

查看tasktracker状态

http://192.168.134.101:50060

http://192.168.134.102:50060

查看HDFS状态:

http://192.168.134.100:50070

安装zookeeper-3.4.5

使用WinSCP将zookeeper-3.4.5.tar上传到/home/hadoop目录下

tar -zxvf zookeeper-3.4.5.tar 解压

进入zookeeper-3.4.5/conf/目录 我们会看到zoo_simple.cfg配置文件

[hadoop@master zookeeper-3.4.5]$ cd conf/

[hadoop@master conf]$ ls

configuration.xsl  log4j.properties  zoo_sample.cfg

执行命令 cp zoo_sample.cfg zoo.cfg

编辑zoo.cfg文件如下:



 

 为了让系统能够识别zoo.cfg中的server.id=host:port:port中server.id,在namenode节点的/home/hadoop/zookeeper-3.4.5/data中创建一个myid 里面只有一个数字1;同理datanode1的/home/hadoop/zookeeper-3.4.5/data下创建一个myid里面只有一个数字2,依次类推...id范围为1-255

这些配置需要复制到集群的每个节点上。

然后切换到root用户修改/etc/profile文件:



 

然后同步修改其他节点,修改完成后执行zookeeper分发命令

scp -r zookeeper-3.4.5 datanode1:/home/hadoop

scp -r zookeeper-3.4.5 datanode2:/home/hadoop

现在我们可以尝试运行zookeeper了。

[hadoop@namenode bin]$ ./zkServer.sh start

[hadoop@datanode1 bin]$ ./zkServer.sh start

[hadoop@datanode2 bin]$ ./zkServer.sh start

然后我们可以通过

[hadoop@datanode1 bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /home/hadoop/zookeeper-3.4.5/bin/../conf/zoo.cfg

Mode: leader

[hadoop@datanode2 bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /home/hadoop/zookeeper-3.4.5/bin/../conf/zoo.cfg

Mode: follower

来验证当前节点在zookeeper中的角色是leader还是follower。

至此zookeeper安装完成。

 【可能遇到的问题】

我们打开zookeeper-3.4.5/bin/zookeeper.out会看到这些异常(确实看着让人很不爽)不过我们不用管它,这只是其他节点上的zookeeper未启动导致的。



 

HBase安装

 同样我首先需要上传HBase安装包并解压(具体过程与上一样 略)。

我们使用的是hbase-0.94.7-security.tar.gz 故解压完后将其重命名为hbase-0.94.7。

由于HBase-0.94.7中带有hadoop-core.1.0.4.jar 而我们使用的hadoop-1.1.2所以未了避免冲突,我们需要将hadoop-core-1.0.4.jar换成hadoop-core-1.1.2.jar。

然后打开conf/hbase-env.sh修改一下内容

# The java implementation to use.  Java 1.6 required.

export JAVA_HOME=/usr/java/jdk1.6.0_45

# Extra Java CLASSPATH elements.  Optional.

export HBASE_CLASSPATH=/home/hadoop/hadoop-1.1.2/conf

# Tell HBase whether it should manage it's own instance of Zookeeper or not.

export HBASE_MANAGES_ZK=false

接下来需要我们来配置conf/hbase-site.xml



 hbase.rootdir指定Hbase数据存储目录,如果/hbase目录不存在,则需要在namenode节点中通过hadoop fs -    mkdir /hbase创建该目录

   hbase.cluster.distributed 指定是否是完全分布式模式,单机模式和伪分布式模式需要将该值设为false

   hbase.master指定Master的位置

   hbase.zookeeper.quorum 指定zooke的集群,多台机器以逗号分隔

接下来,打开conf/regionservers添加一下内容

datanode1

datanode2

指定HRegionServer进程将在哪些节点上运行

然后将配置好的HBase分发给各个节点 同上 略...

至此,HBase配置已经OK,在namenode上启动hadoop集群,接着在每台机器上启动zookeeper,最后启动hbase,以./hbase shell进入hbase的shell命令行,运行status查看当前的状态,如果命令可正常运行说明集群配置成功。

 验证地址:

http://192.168.134.100:60010/master-status



 

启动顺序:hadoop-》zookeeper-》hbase

停止顺序:hbase-》zookeeper-》hadoop

 哈哈 大功告成 小开心一下。大笑

猜你喜欢

转载自sonicery-d.iteye.com/blog/2108334