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-****** -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来验证一下
[[email protected] 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状态
查看tasktracker状态
查看HDFS状态:
安装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配置文件
[[email protected] zookeeper-3.4.5]$ cd conf/
[[email protected] 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了。
[[email protected] bin]$ ./zkServer.sh start
[[email protected] bin]$ ./zkServer.sh start
[[email protected] bin]$ ./zkServer.sh start
然后我们可以通过
[[email protected] bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader
[[email protected] 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
哈哈 大功告成 小开心一下。