登录 |  注册 |  繁體中文


Hadoop2 及hbase 全分布式安装详解

分类: 人工智能&大数据 颜色:橙色 默认  字号: 阅读(1971) | 评论(0)

三台服务器,每台的作用如下:

    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.进入下载文件夹,找到下载的文件,运行如下命令解压

tar -xvf  apache-maven-2.2.1-bin.tar.gz


解压后的文件夹名为apache-maven-3.0.3

1.1.3.使用mv命令将apache-maven-3.0.3文件夹拷贝到自己指定的文件夹,比如/usr/local/下

mv -rf apache-maven-3.0.3 /usr/local/


1.1.4.配置环境变量,编辑/etc/profile文件,添加如下代码

export MAVEN_HOME=/usr/local/apache-maven-3.0.3
export PATH=${PATH}:${MAVEN_HOME}/bin


1.1.5.保存文件,并运行如下命令使环境变量生效

source /etc/profile


1.1.6.在控制台输入如下命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功

mvn -v

1.2 protobuf 安装

下载 https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz 

2.5.1版本的hadoop ,一定要2.5.0版本的protobuf 否则会出错

标准编译安装: ./configure && make && make install
并配置环境变量
 

检测是否安装成功:

# protoc --version

1.3 jdk 7安装

下载解压 jdk-7u45-linux-x64.tar.gz  (不需要安装)

并配置环境变量

查看是否成功:

# java -version

1.4 安装 cmake 及相关

 yum install cmake

yum install zlib-devel

yum install openssl-devel

 

2 最终的环境变量


	
export JAVA_HOME=/data/app/jdk1.7.0
export MAVEN_HOME=/data/app/apache-maven-3.3.3
export PROTOBUF=/data/app/protobuf
export HADOOP_HOME=/data/app/hadoop2.5.2
export LD_LIBRARY_PATH=/data/app/hadoop2.5.2/lib/native/
 
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PROTOBUF/bin:$HADOOP_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar::$(hadoop classpath)

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上的各种守护进程的,

这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。
 
配置NameNode节点可以免密码登录到其余所有节点,只需要单向免密登录即可,无需双向;
 
即把hd1生成的公钥,放到hd2,hd3上面, 实现hd1可以免密码访问hd2和hd3
 

3.3.1 生成 公钥/私钥

切换到hadoop用户,并生成密钥

ssh-keygen -t rsa -P ""
 
将你~/.ssh目录中的id_rsa.pub这个文件拷贝到其它几台服务器的~/.ssh目录中,
 
cat /home/hadoop/.ssh/id_rsa.pub >>/home/hadoop/.ssh/authorized_keys
 
即把产生的id_rsa.pub,添加到其它机器的authorized_keys,
 
authorized_keys要设置为644, 这是linux的安全要求,如果权限不对,自动登录失败
 
3.4 生成hadoop目录
     cd /data/
    mkdir hadoopfile
    chown hadoop  hadoopfile
    chgrp hadoop  hadoopfile
4 修改hadoop配置文件,如下:
 

 vim /etc/hadoop/core-site.xml


 
  hadoop.tmp.dir
  /data/hadoopfile/tmp
 
 
  fs.defaultFS
  hdfs://hd1:9000
 

 vim /etc/hadoop/hdfs-site.xml
 

 
  dfs.replication
  1
 

 
 vim /etc/hadoop/mapred-site.xml 

 
  mapreduce.framework.name
  yarn
 

 
 vim /etc/hadoop/hadoop-env.sh 
修改如下
export JAVA_HOME=/data/app/jdk1.7.0/
 
#export HADOOP_ROOT_LOGGER=DEBUG,console 此句为调试模式
 

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即可

4 dfs负载设置均衡(选项)
因为默认的数据传输带宽比较低,可以设置为64M,即hdfs dfsadmin -setBalancerBandWidth 67108864即可
默认balancer的threshold为10%,即各个节点与集群总的存储使用率相差不超过10%,我们可将其设置为5%
然后启动Balancer,sbin/start-balancer.sh -threshold 5,等待集群自均衡完成即可

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

 
2 hbase启动zookeeper时候报错:
java.io.IOException: Could not find my address: iZ23s17zdsd in list of ZooKeeper quorum servers
        at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.writeMyID(HQuorumPeer.java:134)
        at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.main(HQuorumPeer.java:61)
 
 
配置的IP地址或者主机名没在IPS里面,IPS貌似包括主机名、IP地址、localhost、127.0.0.1等。但我配的主机名不在里面,问题便在此。
解决方法:
一、把主机名改为IP地址便可,理由是在IPS里面。
二、把本机的主机名改为hd1,理由仍是IPS里面。

 




姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部