H 集群搭建

目录:
一、准备工作
二、搭建H 注意要点
三、H 集群搭建流程
四、集群操作顺序
五、配置参考

一、准备工作
首先建立信任关系,ssh互联,或者修改官方脚本建立pssh。Hadoop、Zookeeper、H 集群搭建的过程中,只需要在master配好,scp或者pscp到其他机器即可,但是Zookeeper集群不同节点需要针对性的修改myid,有不同的配置。

二、搭建H 注意要点
1、由于H 需要HDFS的支持,所以需要先安装HDFS,而HDFS包含在Hadoop项目中,所以首先应该下载hadoop的bin包。
2、注意与H 版本的兼容性,可在http://h .apache.org/book.html#basic.prerequisites 中Hadoop Prerequisites查到版本兼容性表格。
3、Hadoop软件采用 的半格式化方法来存储配置信息,配置项格式为

<property><name></name><value></value></property>

name和value标签可参考官方文档。
4、Hadoop软件使用jdk提供的jps工具查看hadoop进程

三、H 集群搭建流程
1、首先建立集群的ssh互连,配置好hostname和hosts,保证能够ping通hosts。
2、因为hadoop安装需要Jdk支持,检查是否安装了JDK,而后面H 对jdk版本有要求,具体版本参考见http://h .apache.org/book.html#java
3、hadoop需要选择一个节点作为master来执行name node和resourcemanager的角色,其他节点作为slaves来执行datanode和nodemanager的角色。
HDFS配置:
对应配置项参考http://hadoop.apache.org/docs/ 相关版本,hadoop 2和之前的版本之间有较大变化。
3.1、此时切换到工作用户work,建立工作目录h ;
3.2、解压缩hadoop的bin包;
3.3、进入etc/hadoop/目录,修改该目录下的几个配置文件,该目录为站点特定的配置文件;
3.4、修改hadoop-env.sh,找到export JAVA_HOME=${JAVA_HOME},修改成实际的idk所在路径,修改export HADOOP_CONF_DIR为配置文件所在路径,即该脚本所在路径;
3.5、修改core-site. ,标签格式为

<property><name></name><value></value></property>

配置项请参考 http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-common/core-default.
配置主节点地址,端口号注意不要产生冲突,修改hadoop.tmp.dir,该选项为存储临时数据的路径,请提前建好相关文件夹,修改权限(如果没有在hdfs-site. 中设置namenode和datanode的存储地址,HDFS就会把数据存储在该目录下);
3.6、配置hdfs-site. ,dfs.nameservices为集群名,dfs.datanode.data.dir为datanode存储data block的地址(此处跟之前版本不同,hadoop2.6.4没有了df.data.dir而改为该项,在这里配置多个磁盘路径,注意要有权限对该目录进行操作),dfs.replication为data存储副本数(默认为3);
3.7、配置slaves,把所有节点的hostname加入该文件,保证在shell中能ping通这些hostname;
3.8、使用scp命令将hadoop的bin包发送到集群其他节点的工作用户根目录下;

4、配置Zookeeper

5、配置H
参考官方手册 http://abloz.com/h /book.html#zookeeper
5.1、修改h -env.sh中JAVA_HOME为idk安装路径H _MANAGES_ZK=false #该项表示是否由H 负责启动和关闭Zookeeper;
5.2、修改h conf目录下 regionservers文件;
5.3、编辑所有机器上的h -site文件,h .rootdir必须与你的Hadoop集群的core-site. 文件域名端口号配置保持一致才行(可提前在HDFS上建立一个h 文件夹方便管理),如果你Hadoop的hdfs使用了其它端口,请在这里也修改。再者就是H 该项并不识别机器IP,只能使用机器hostname才可行;
5.4、分发到其他节点;
5.5、配置环境变量,加入H _CONF_DIR和HADOOP_CONF_DIR

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/home/work/h /h -1.2.0/conf/h -site. :/home/work/h /h -1.2.0/lib/*:/home/work/h /hadoop-2.6.4/share/hadoop/common/hadoop-common-2.6.4.jarexport H _CONF_DIR=/home/work/h /h -1.2.0/confexport HADOOP_CONF_DIR=/home/work/h /hadoop-2.6.4/etc/hadoop

四、集群操作顺序
Hadoop、ZooKeeper和H 之间应该按照顺序启动和关闭:启动Hadoop—>启动ZooKeeper集群—>启动H —>停止H —>停止ZooKeeper集群—>停止Hadoop。
1、启动HDFS,
cd到hadoop根目录,在bin目录下执行./hadoop namenode -format,格式化HDFS环境(该操作会删除HDFS上的所有数据,一般情况下仅在第一次配置时使用或者HDFS修改了配置时需要使用,使用命令前必须将datanode下存储先删除,否则会产生无法识别版本的错误),
在sbin目录下运行start-dfs.sh,启动之后在master运行jps命令可以看到Namenode进程启动,在datanode运行jps命令可以看到datanode进程启动;
2、若H 存储在HDFS上,那么需要在hadoop根目录下执行bin/hadoop fs -mkdir /h 命令(我的配置是让H 存储在hdfs上的 目录,所以要提前创建该目录),这时不要轻易删除该文件夹,因为H 启动时会在该hdfs目录下生成一个version文件,如果删除后,可能会导致下次启动时h 的master无法启动;
3、启动Zookeeper,运行jps可以看到QuorumPeerMain进程启动,若没有用H 监控,则需要去每个zookeeper节点,在bin目录下运行脚本./zkServer.sh start ;
4、启动H ,在bin目录下运行start-h .sh,master运行jps可以看到HMaster进程启动,regionserver可以看到HRegionServer进程启动。至此启动结束;
5、在H 根目录下,运行bin/h shell进入h shell即可交互式操作H 数据库。

五、配置参考
1、HDFS
hadoop-env.sh

  export JAVA_HOME=/home/work/h /jdk1.7.0_79  export HADOOP_PREFIX=/home/work/h /hadoop-2.6.4

hdfs-site.

<configuration><property><name>dfs.nameservices</name><value>your cluster name</value><de ion>whatever you want to name your cluster</de ion></property><property><name>dfs.namenode.name.dir</name><value>file:///home/work/h /hadoop-2.6.4/name</value></property><property><name>dfs.datanode.data.dir</name><value>/home/disk0/hadoop/data,/home/disk1/hadoop/data,/home/disk2/hadoop/data,/home/disk3/hadoop/data,/home/disk4/hadoop/data,/home/disk5/hadoop/data,/home/disk6/hadoop/data</value><de ion>让HDFS分布在不同的几个硬盘上,减少I/O压力</de ion></property><property><name>dfs.replication</name><value>3</value></property></configuration>

core-site.

<configuration>        <property>        <name>fs.defaultFS</name>        <value>your server:9006</value>        </property>        <property>        <name>hadoop.tmp.dir</name>        <value>/home/work/h /hadoop-2.6.4/tmp</value>        </property></configuration>

slaves

your server list

2、ZooKeeper
zoo.cfg(dataDir和dataLogDir目录需要提前建立,并注意权限,还有端口号绑定之前注意占用问题)。

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial# synchronization phase can takeinitLimit=10# The number of ticks that can pass between# sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just# example sakes.dataDir=/home/work/h /zookeeper-3.4.8/tmp# the port at which the clients will connectclientPort=2199# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60server.1=yourserver:2888:3888server.2=yourserver:2888:3888server.3=yourserver:2888:3888server.4=yourserver:5888:6888server.5=yourserver:2888:3888server.6=yourserver:2888:3888server.7=yourserver:2888:3888# Be sure to read the maintenance section of the# administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance#dataLogDir=/home/work/h /zookeeper-3.4.8/logs# The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1

在dataDir目录下建立myid文件,里面写入的内容跟zoo.cfg配置中server.X=……中的X保持一致

3、H
h -env.sh

export JAVA_HOME=/home/work/h /jdk1.7.0_79export H _CLASSPATH=/home/work/h /hadoop-2.6.4/etc/hadoopexport H _MANAGES_ZK=false

h -site.

<configuration><property><name>h .rootdir</name><value>hdfs://yourserver:9006/h </value></property><property><name>h .cluster.distributed</name><value>true</value></property><property><name>h .zookeeper.quorum</name><value>your server</value></property><property><name>h .zookeeper.property.dataDir</name><value>/home/work/h /zookeeper-3.4.8/tmp</value></property><property><name>h .regionserver.port</name><value>9870</value></property><property><name>h .zookeeper.property.clientPort</name><value>2199</value></property></configuration>

regionserver

your server list
收藏 打印