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

前言

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

准备工做

  • 时间的同步
  • 主节点上使用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,这里分开看。)下面分开来看:java

  • 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中直接定义该变量。node

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

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

    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/user/tmp/hadoop</value>
        <description>hadoop的一些临时文件存放目录。其余一些目录也使用了该目录做为基础</description>
    </property>
</configuration>

我配置了这两个参数后系统就能够正常工做了。详细的官网配置地址在此处算法

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

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/user/tmp/hadoop/dfs/data</value>
        <description>数据节点数据的存放目录</description>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>3</value>
        <description>hdfs备份的数目</description>
    </property>
</configuration>

配置很简单。详细配置在此处数据库

2.yarn

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

  • 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变量)。segmentfault

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

xml<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>localhost</value>
        <description>resourcemanager的主机名。默认为0.0.0.0。被不少其余的参数做为基础</description>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

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

  • mapred-site.xml
xml<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>localhost:10020</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>localhost:19888</value>
    </property>
</configuration>

该配置文件主要配置如下和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<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:9000/hbase</value>
        <description>hbase数据存放位置。这里是放在了hdfs上。</description>
    </property>

    <property>
        <name>hbase.tmp.dir</name>
        <value>/home/user/tmp/hbase</value>
        <description>hbase的一些临时文件存放目录。</description>
    </property>

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
        <description>设置为分布式</description>
    </property>

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

</configuration>

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

小结

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

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

相关文章
相关标签/搜索