hadoop,hbase集群搭建的又一次总结

前言

由于项目的需要,hadoop2.2.0与hbase0.98.5的集群搭建已经有一段时间了。今日重新研究了一遍整个集群的搭建,对整个搭建过程有了进一步的理解。

准备工作

  • 时间的同步
  • 主节点上使用ssh-keygen生成密钥,并使用ssh-copy-id将公钥拷贝到其他机器。注意主节点自己也需要安装ssh server,并且自己对自己也要能无密码登录
  • JAVA_HOME的设置

1. hdfs

以前搭建这个平台主要是使用hbase作为存储数据库,所以只使用了hadoop的hdfs。其核心配置文件有三个:hadoop-env.sh,core-site.xml,hdfs-site.xml。(当然,yarn框架也使用到了hadoop-env.shcore-site.xml,这里分开看。)下面分开来看:

  • hadoop-env.sh
    这个文件主要配置如java路径、hadoop配置文件目录、日志目录等环境变量,最简单的配置是只修改java路径(JAVA_HOME)而不修改其他。不过今天我想重启集群时发现stop-hdfs.sh脚本无法关闭集群,网上找到的原因是集群进程的pid号默认放在/tmp目录下导致pid号的定期删除,而管理脚本找不到pid号导致管理失败。于是考虑将pid放到自己定义的目录下。hadoop-env.sh文件中定义了一个HADOOP_PID_DIR变量,于是可以简单地在.bashrc文件中加入该变量即可。如果不行,在hadoop-env.sh中直接定义该变量。

  • core-site.xml
    这个文件核心设置如下:

xml
    
        fs.defaultFS
        hdfs://localhost:9000
        指明了默认的hdfs的路径和端口。在HBase指明在hdfs上的存储位置时用的就是这个路径
    

    
        hadoop.tmp.dir
        /home/user/tmp/hadoop
        hadoop的一些临时文件存放目录。其他一些目录也使用了该目录作为基础
    

我配置了这两个参数后系统就可以正常工作了。详细的官网配置地址在此处。

  • hdfs-site.xml
    核心配置如下:
xml
    
        dfs.namenode.name.dir
        /home/user/tmp/hadoop/dfs/name
        名字节点数据的存放目录
    

    
        dfs.datanode.data.dir
        /home/user/tmp/hadoop/dfs/data
        数据节点数据的存放目录
    

    
        dfs.replication
        3
        hdfs备份的数目
    

配置很简单。详细配置在此处。

2.yarn

hadoop 2.2.0采用了第二代架构yarn,和第一代相比有着不小的改变。其配置文件有yarn-env.sh,yarn-site.xml,mapred-site.xml

  • yarn-env.sh
    这个文件也是设置如java路径等环境变量。可以在文件中或者直接在.bashrc中设置如JAVA_HOME或者YARN_PID_DIR(设置pid的存放目录)等变量。pid默认存放在/tmp目录下,丢失也会导致stop-yarn.sh等脚本的失效。(stop-yarn.sh脚本实际上调用的是yarn-daemon.sh,其中可以发现yarn_PID_DIR变量)。

  • yarn-site.xml
    核心配置如下:

xml
    
        yarn.resourcemanager.hostname
        localhost
        resourcemanager的主机名。默认为0.0.0.0。被很多其他的参数作为基础
    

    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

    
        yarn.nodemanager.aux-services.mapreduce.shuffle.class
        org.apache.hadoop.mapred.ShuffleHandler
    

如上的三条配置即可成功运行。详细配置见此处。

  • mapred-site.xml
xml
    
        mapreduce.framework.name
        yarn
    

    
        mapreduce.jobhistory.address
        localhost:10020
    

    
        mapreduce.jobhistory.webapp.address
        localhost:19888
    

该配置文件主要配置以下和mapreduce任务相关的配置。甚至后面两条关于address的配置也不是必须的,不过我没去尝试。完整配置在这里。

3. hadoop其他配置文件

其他配置文件包括slavesmasters。很简单,不详述。

配置完成后使用scp命令同步到其他节点。先使用hadoop namenode -format格式化名字节点后,在启动脚本start-dfs.sh看是否成功。

4. zookeeper

前一段时间安装的hbase用的是自带的zookeeper。后来发现还是独立配置zookeeper要方便些,于是就接触了一下zookeeper的安装。其配置文件只有zoo.cfg,官网给出的单机配置如下:

configurationtickTime=2000
dataDir=/home/user/tmp/zookeeper
clientPort=2181

集群配置也不复杂,官网很详细,也不赘述。有一点注意的是集群数目最好是奇数。由于其选举的算法,奇数是最优的。
zookeeper默认的启动日志zookeeper.out是放在当前目录下的(zkEnv.sh中设置ZOO_LOG_DIR变量,zkServer.sh中指定zookeeper.out文件),所以可以在zkEnv.sh中设置ZOO_LOG_DIR变量指定自己的日志存放路径。
启动使用zkServer.sh start命令。

参考:
解读zookeeper的配置项
修改Zookeeper日志输出路径

5. hbase

hbase的配置文件有hbase-env.shhbase-site.xml。其他的配置如regionservers很简单,不赘述。hbase配置时还需要注意调整hosts文件以及系统的打开文件数目等的限制。见我的上次总结。

  • hbase-env.sh
    最好在其中设置JAVA_HOME而不是用系统的JAVA_HOME参数(官方文档好像有提到这一点)。可以在其中设置HBASE_PID_DIR以修改pid的存放路径。由于使用独立的zookeeper,还需要设置export HBASE_MANAGES_ZK=false来禁止使用自带的zookeeper。

  • hbase-site.xml

xml
    
        hbase.rootdir
        hdfs://localhost:9000/hbase
        hbase数据存放位置。这里是放在了hdfs上。
    

    
        hbase.tmp.dir
        /home/user/tmp/hbase
        hbase的一些临时文件存放目录。
    

    
        hbase.cluster.distributed
        true
        设置为分布式
    

    
        hbase.zookeeper.quorum
        localhost
        设置zookeeper的集群。如果是独立zookeeper,则此处填写zookeeper集群的每台机器,用逗号隔开;如果是自带zookeeper,则填写要启动zookeeper服务的机器列表。自带zookeeper不要忘了设置hbase.zookeeper.property.dataDir设置临时文件存放目录
    


hbase-site.xml的完整配置见此处。

小结

此处把整个集群安装的配置过了一遍,仅仅包含了最小化的设置。更为具体专业的设置还需要自己进一步深入学习了解。

参考:修改 hadoop 集群及hbase集群的pid文件存放位置

你可能感兴趣的:(hadoop,hbase集群搭建的又一次总结)