01 基本要求
集群搭建,包含Hadoop HA,hive,sqoop,spark及dolphine scheduler。生产可用的大数据平台,应当包含存储(hdfs)、元数据管理(hive)、计算(mr、tez、spark、flink)、资源管理(yarn)等大数据组件,以及调度系统(dolphinscheduler),运维监控系统等。
所有软件均使用hadoop用户安装。
服务转发域名采用 服务名.hadoop.com的格式,通过NGINX转发。
目录结构:应用程序目录 /disk0/apps、数据存放目录/disk0/data、日志存放目录 /disk0/logs。其中/disk0为磁盘挂载目录,多磁盘情况下依次为/disk0、/disk01、/disk02等。hadoop用户家目录设置为/disk0/home/hadoop。
02 集群节点及服务分配
主机名 | 内存 | cpu | 磁盘挂载 | zk (3.4.14) |
hdp (3.2.2) |
hive (3.1.2) |
spark (3.0.2) |
sqoop (1.4.7) |
ds (1.3.5) |
---|---|---|---|---|---|---|---|---|---|
hadoop-1 | 32g | 16 | /disk0 32G | zk1 | nameNode DFSZKFailoverControllerv |
api | |||
hadoop-2 | 32g | 16 | /disk0 32G | zk2 | secondnameNode secondresourcemanager DFSZKFailoverControllerv |
master | |||
hadoop-3 | 32g | 16 | /disk0 32G | zk3 | resourcemanager JournalNode |
hive metastore hiveserver2 |
spark | sqoop | |
hadoop-4 | 32g | 16 | /disk0 32G | datanode nodemanager JournalNode |
|||||
hadoop-5 | 32g | 16 | /disk0 32G | datanode nodemanager JournalNode |
hive | spark | sqoop | worker log alert |
总内存 | 总cpu | 总存储 |
---|---|---|
160g | 80 | 160g |
有些服务可能会暴露不同的接口,yarn和ds的服务转发如下:
服务 | 链接 | |
---|---|---|
yarn | http://yarn.hadoop.com/cluster | |
ds | http://dolphinescheduler.hadoop.com/dolphinscheduler |
Hadoop各服务角色:
nameNode 是管理者,主要负责管理hdfs文件系统,具体包括namespace命名空间管理(即目录结构)和block管理。
DataNode 主要用来存储数据文件,因为文件可能巨大无比(大数据,大于1TB),HDFS将一个文件分割成一个个的block,这些block可能存储在一个DataNode上或 者多个DataNode上。DataNode负责实际的底层的文件的读写。
ResourceManager 是Yarn集群主控节点,负责协调和管理整个集群(所有NodeManager)的资源。
NodeManager 管理一个YARN集群中的每一个节点。比如监视资源使用情况( CPU,内存,硬盘,网络),跟踪节点健康等。
DFSZKFailoverController 是HDFS nameNode HA实现的中心组件,它负责整体的故障转移控制等。
JournalNode 两个nameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。
Hadoop集群部署采用HA模式,nameNode和resourcemanager都有主备两个服务。默认情况下,01、03号机器上的nameNode和resourcemanger处理active状态,02号机器secondnameNode,secondresourcemanager处理stand by状态。一旦主服务发生故障,备服务会迅速切换到active状态,接管集群。这种情况下,应当迅速排除主节点故障,重启主节点。
03 集群安装
01 linux系统基本配置
01 修改主机名并配置主机映射
赋予hadoop sudo权限
操作用户 | hadoop | |
---|---|---|
命令 | vim /etc/hosts | #hadoop集群 192.168.0.111 hadoop-1 192.168.0.112 hadoop-2 192.168.0.113 hadoop-3 192.168.0.114 hadoop-4 192.168.0.115 hadoop-5 |
02 关闭防火墙及selinux
操作用户 | hadoop | |
---|---|---|
命令 | systemctl disable firewalld.service | |
systemctl stop firewalld.service | ||
vim /etc/selinux/config | 修改 SELINUX=disabled |
03 配置免密登录
五台主机之间配置免密登录,参考以下步骤
操作用户 | hadoop | |
---|---|---|
命令 | ssh-keygen | 在~/.ssh目录下生成公钥、私钥对 |
cd ~/.ssh/ | 进入.ssh目录 | |
scp id_rsa.pub hadoop@hadoop-2:/home/hadoop | 将密钥复制到目标机的home目录下(本机也需要配置)。 复制时建议指定用户及ip,表示运行本机当前登陆用户远程免密登录hadoop-2上的hadoop用户 |
|
touch authorized_keys | 在目标机.ssh目录下创建authorized_keys文件 | |
chmod 600 authorized_keys | 修改权限 | |
cat id_rsa.pub >> authorized_keys | 追加公钥到authorized_keys文件中 |
04 安装java
#java安装到指定目录,文件安装目录建议保留版本号,有些软件不提供版本查看命令,保留版本号方便查看版本
mkdir -p /disk0/apps
#解压到java文件目录,解压后文件存放目录为/disk0/apps/jdk1.8.0_161
tar -vzxf jdk-8u161-linux-x64.tar.gz -C /disk0/apps/
#添加环境变量,编辑配置文件
vi /etc/profile
在文件最下方添加,保存退出
export JAVA_HOME=/disk0/apps/jdk1.8.0_161
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
#使环境变量生效
source /etc/profile
#测试
java -version
05 创建相关目录
创建 /disk0/apps目录(软件安装),/disk0/data目录(数据存储) 及 /disk0/logs目录(日志存放)
各个软件的数据目录,日志目录修改方法不同,有些软件没有提供直观的修改目录的方法,建议直接使用默认目录。
02 安装zookeeper
运维安装,自行安装可以参考以下步骤