生产环境部署Hadoop+Spark+HBase+Hue

大数据平台生产环境部署指南

@(Hadoop)

总结一下在生产环境部署hadoop+Spark+Hbase+Hue等产品遇到的问题、提高效率的方法和相关的配置。

集群规划

假设现在生产环境的信息如下:

服务器数量:6
操作系统:Centos7
Master节点数:2
Zookeeper节点数:3
Slave节点数:4
划分各个机器的角色如下:

主机名 角色 运行进程
hadoop1 Master Namenode
hadoop2 Master_backup Namenode
hadoop3 Slave、Yarn Datanode、ResourceManager、NodeManager
hadoop4 Slave、Zookeeper Datanode、NodeManager、QuorumPeerMain
hadoop5 Slave、Zookeeper Datanode、NodeManager、QuorumPeerMain
hadoop6 Slave、Zookeeper Datanode、NodeManager、QuorumPeerMain
一些注意事项

尽量使用非root用户

这是为了避免出现一些安全问题,毕竟是生产环境,即使不是也养成习惯。
各个机器的用户名保持一致,需要超级用户权限时加入sudoers里面即可。

数据存放的目录和配置文件分离

一般我们在自己的虚拟机上搭建集群的时候这个可以忽略不计,但是生产机器上需要注意一下。

由于生产机一般配置都很高,几十T的硬盘很常见,但是这些硬盘都是mount上去的,如果我们按照虚拟机上的操作方式来部署的话,集群的所有数据还是会在/目录下,而这个目录肯定是不会大到哪里去,
有可能就出现跑着跑着抛磁盘空间爆满的异常,但是回头一查,90%的资源没有利用到。
所以,将集群存放数据的目录统一配置到空间大的盘上去,而配置文件保持不变,即配置文件和数据目录的分离,避免互相影响,另外在使用rsync进行集群文件同步的时候也比较方便。

规划集群部署的目录

部署之前提前将各个目录分配好,针对性的干活~
这里将Hadoop、hbase、Spark等软件安装在:/usr/local/bigdata目录下
数据存放目录配置在:/data2/bigdata下
这里的/data2为mount上去的硬盘

集群部署

这里使用的各个软件版本号为:

Zookeeper3.4.5
Hadoop2.2.0
HBase0.98
Spark1.4.1
Hive1.2.1
Hue3.7.0
必要准备

1、修改主机名和IP的映射关系

编辑/etc/hosts文件,确保各个机器主机名和IP地址的映射关系

2、防火墙设置

生产环境上防火墙不可能关闭,所以查考下方的端口表让网络管理员开通吧~
P.S. 当然如果你不care的话直接关防火墙很省事,不过不推荐。。

3、JDK的配置

先检查一下生产机上有没有预装了OpenJDK,有的话卸了吧~

rpm -qa | grep OracleJDK

  • 1

把出现的所有包都

rpm -e --nodeps

  • 1

卸载掉。

重新安装OracleJDK,版本没有太高要求,这里使用1.7。
到Oracle官网下载对应版本的JDK之后在安装在/usr/local下面,在~/.bash_profile中配置好环境变量,输入Java -version出现对应信息即可。

4、ssh免密码登陆

这个步骤如果机器比较多的话就会很烦了,现在各个机器上生成ssh密钥:

ssh-keygen -t rsa

  • 1

一路回车保存默认目录:~/.ssh
通过ssh将各个机器的公钥复制到hadoop1的~/.ssh/authorized_keys中,然后发放出去:

#本机的公钥 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #各个节点的公钥 ssh hadoopN cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #复制完之后将authorized_keys发放给各个节点 scp ~/.ssh/authorized_keys hadoopN:~/.ssh/authorized_keys

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

测试:

ssh date hadoop2

  • 1

如果出现权限问题尝试使用:

chmod -R 700 ~/.ssh

  • 1

Zookeeper

将zk上传到/usr/local/bigdata中解压缩
进入conf目录,修改zoo.cfg:

cp zoo_sample.cfg zoo.cfg vim zoo.cfg #修改: dataDir=/data2/bigdata/zookeeper/tmp ticktickTime=20000 #在最后添加: server.1=hadoop4:2888:3888 server.2=hadoop5:2888:3888 server.3=hadoop6:2888:3888

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

ticktickTime默认为2000,2-20倍的minSessionTimeout与maxSessionTimeout
注: tickTime 心跳基本时间单位毫秒,ZK基本上所有的时间都是这个时间的整数倍。
zk的详细配置见:
zookeeper配置文件详解

创建配置的dataDir:

mkdir /data2/bigdata/zookeeper/tmp touch /data2/bigdata/zookeeper/tmp/myid echo 1 > /data2/bigdata/zookeeper/tmp/myid

  • 1
  • 2
  • 3

配置结束,将Zookeeper传到hadoop5、6上,创建dataDir并修改myid为2、3

启动

在hadoop4、5、6上进入zk的bin目录:

./zkServer.sh start ./zkServer.sh status

  • 1
  • 2

正确的结果应该是一个leader,两个follower

Hadoop

上传hadoop包到/usr/local/bigdata并解压缩,进入etc/hadoop目录

hadoop-env.sh

考虑到数据和程序的分离,决定将那些会不断增长的文件都配置到/data2/bigdata/hadoop下,包括:日志文件,pid目录,journal目录。
所以在此文件中需要配置:

JAVA_HOME
HADOOP_PID_DIR
HADOOP_LOG_DIR
HADOOP_CLASSPATH
HADOOP_CLASSPATH根据需要配置其他jar包的路径

yarn-en.sh

YARN_LOG_DIR
YARN_PID_DIR
其他五个核心文件内容如下:

core-site.xml:

<configuration> <property> <name>fs.defaultFS

猜你喜欢

转载自blog.csdn.net/bigcharsen/article/details/76609307