三台服务器,每台的作用如下:
192.168.1.1 NameNode SecondaryNameNode ResourceManager HMaster HQuorumPeer 192.168.1.2 DataNode NodeManager HRegionServer HQuorumPeer 192.168.1.3 DataNode NodeManager HRegionServer HQuorumPeer
执行以下安装过程,所有机器都执行一次
由于官方只提供32位的hadoop包,所以在CentOS64位上安装,要手工自己编译 ,否则会提示
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
原因是apache官网提供的二进制包,里面的native库,是32位的 ,和64位系统不兼容
1、 准备工作
1.1 Maven安装
1.1.1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
1.1.2.进入下载文件夹,找到下载的文件,运行如下命令解压
解压后的文件夹名为apache-maven-3.0.3
1.1.3.使用mv命令将apache-maven-3.0.3文件夹拷贝到自己指定的文件夹,比如/usr/local/下
1.1.4.配置环境变量,编辑/etc/profile文件,添加如下代码
export PATH=${PATH}:${MAVEN_HOME}/bin
1.1.5.保存文件,并运行如下命令使环境变量生效
1.1.6.在控制台输入如下命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功
1.2 protobuf 安装
下载 https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
2.5.1版本的hadoop ,一定要2.5.0版本的protobuf 否则会出错
检测是否安装成功:
# protoc --version
1.3 jdk 7安装
下载解压 jdk-7u45-linux-x64.tar.gz (不需要安装)
并配置环境变量
查看是否成功:
1.4 安装 cmake 及相关
yum install cmake
yum install zlib-devel
yum install openssl-devel
2 最终的环境变量
3 安装配置
下载解压安装包 hadoop-2.5.1-src.tar.gz
# cd hadoop-2.5.1-src
# mvn package -Pdist,native -DskipTests -Dtar
此项时间最长,多次下载失败,导致faild,
多试几次或换镜像地址,就会成功 , 我下载了近半天
编译结束,最后打印的信息如下,每一项均是‘SUCCESS’,则编译成功
因为是在64位系统下编译的,所以编译出来的代码包是64位版本的;可以直接将/hadoop-2.5.1-src/hadoop-dist/target 目录下的hadoop-2.5.1或者hadoop-2.5.1.tar.gz拷贝到其他linux64位平台进行搭建hadoop集群
集群配置(所有节点相同配置)
配置好了后,把./etc/hadoop
目录scp到所有其他机器
Hadoop的配置主要有以下几个配置文件要修改:
— hadoop-env.sh: Hadoop环境变量设置
— core-site.xml:主要完成 NameNode IP和端口设置
— hdfs-site.xml:主要完成 HDFS的数据块副本等参数设置
— mapred-site.xml:主要完成 JobTracker IP和端口设置
3.1 vim /etc/hosts 增加
192.168.1.1 hd1 192.168.1.2 hd2 192.168.1.3 hd3
3.2 增加用户
groupadd hadoop
useradd hadoop -g hadoop
3.3 设置ssh免登录
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,
3.3.1 生成 公钥/私钥
切换到hadoop用户,并生成密钥
cd /data/ mkdir hadoopfile chown hadoop hadoopfile chgrp hadoop hadoopfile
vim /etc/hadoop/core-site.xml
hadoop.tmp.dir /data/hadoopfile/tmp fs.defaultFS hdfs://hd1:9000
dfs.replication 1
mapreduce.framework.name yarn
4 实例
启动,初次运行hadoop时,一定要先格式化hdfs文件系统 bin/hdfs namenode -format
启动:
sbin/start-dfs.sh #Start NameNode, SecondaryNameNode, DataNode
sbin/start-yarn.sh # start NodeManager, ResourceManager
输入jps查看当前已经启动的项,
hd1上输入jps
#jps
NameNode
Jps
DataNode
NodeManager
ResourceManager
SecondaryNameNode
hd2及hd3上输入jps显示
DataNode
Jps
NodeManager
如果缺少以上几项,请开启调试模式,查看日志以解决
操作
./bin/hdfs dfs -touchz /test.txt #创建文件
./bin/hdfs dfs -ls / 列目录
5 动态新增datanode节点
1 按上面的步骤,配置好,
2 启动datanode 在新增的节点上,运行sbin/hadoop-daemon.sh start datanode,
3 启动nodemanager 运行sbin/yarn-daemon.sh start nodemanager即可
5 然后在namenode通过hdfs dfsadmin -report查看集群情况
常见错误: http://my.oschina.net/laigous/blog/356552#OSC_h4_4
6 hbase安装
安装解压即可,每台都执行一次
修改相关配置
1. 修改hbase-env.sh
export HBASE_MANAGES_ZK=true #使用HBase自带的Zookeeper设成true, 单独安装的Zookeeper设为false
2.修改 hbase-site.xml
hbase.rootdir hdfs://hd1:9000/hbase hbase.cluster.distributed true hbase.master hd1:60000 hbase.zookeeper.quorum hd1,hd2,hd3 hbase.zookeeper.property.dataDir /data/zookeeperfile
hbase.rootdir设置hbase在hdfs上的目录,主机名为hdfs的namenode节点所在的主机
hbase.cluster.distributed设置为true,表明是完全分布式的hbase集群
hbase.master设置hbase的master主机名和端口
hbase.zookeeper.quorum设置zookeeper的主机,建议使用单数
hbase.zookeeper.property.dataDir 指定了HBase集群使用的ZooKeeper 集群的存储目录
3 修改 regionservers 添加 (建议不要添加namenode)
hd2
hd3
1 关于 " Unable to load native-hadoop library for your platform" 同样,是因为是32位的hbase,运行在64位操作系统上的原因,因为我们之前编译好了64位的hadoop
所以,可以设置环境变量来解决
#vim /etc/profile
export LD_LIBRARY_PATH=/data/app/hadoop2.5.1/lib/native/
#source /etc/profile #使修改生效
具体可参考官方链接,上面有详细的说明 http://hbase.apache.org/book/hadoop.native.lib.html