用于生产环境Hadoop集群的搭建

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

运维安装,自行安装可以参考以下步骤

wget https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 下载zookeeper
cd /disk0/apps
tar -zxvf zookeeper-3.4.14.tar.gz
cd zookeeper-3.4.14
cd conf/
cp zoo_sample.cfg zoo.cfg
进入apps安装目录解压安装包,解压后生成目录/disk0/apps/zookeeper-3.4.14
进入zookeeper目录
进入conf目录备份配置文件
vi zoo.cfg #修改配置文件如下,分别为数据存放目录和集群列表
dataDir=/disk0/apps/zookeeper-3.4.14/data
server.1=hadoop-1:2888:3888
server.2=hadoop-2:2888:3888
server.3=hadoop-3:2888:3888
cd …/datatouch myid echo “1”>>myid`` 在创建的data目录里创建myid文件
输入1 myid可以理解成zookeeper server的序号
scp -r /disk0/apps/zookeeper-3.4.14 hadoop@hadoop-2:/disk0/apps/
ssh hadoop@hadoop-2
echo “2”>>/disk0/apps/zookeeper-3.4.14/data/myid
远程拷贝app到另外两个节点登录另外两个节点相应的修改myid文件
/disk0/apps/zookeeper-3.4.14/bin/zkServer.sh start 在三台机器上启动zookeeper

03 安装Hadoop HA

01 下载hadoop wget https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz

02 进入/disk0/apps目录,解压缩 hadoop-3.2.2.tar.gz 并重命名为/disk0/apps/hadoop-3.2.2

03 vim /etc/profile,在最后追加

export HADOOP_HOME=/disk0/apps/hadoop-3.2.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

04 在/disk0/data下创建hadoop目录, cd /disk0/data/hadoop, 创建journalnode、data和tmp目录

05 cd /disk0/apps/hadoop-3.2.2/etc/hadoop,该文件夹下修改以下文件

core-site.xml

配置项 说明
fs.defaultFS hdfs://ns1/ 指定hdfs的nameservice
hadoop.tmp.dir /disk0/data/hadoop/tmp 临时存储目录,默认条件下,hdfs的nameNode及datanode的数据会存储在该目录下的指定目录中
ha.zookeeper.quorum hadoop-1:2181,hadoop-2:2181,hadoop-3:2181 高可用模式下zookeeper集群
fs.s3.impl org.apache.hadoop.fs.s3a.S3AFileSystem hadoop整合s3,指定s3文件系统的实现类
还需要将HADOOP_HOME下/share/hadoop/tools/lib目录下的两个jar包拷贝到common/lib下,操作如下:
cp /disk0/apps/hadoop-3.2.2/share/hadoop/tools/lib/aws-java-sdk-bundle-1.11.563.jar /disk0/apps/hadoop-3.2.2/share/hadoop/common/lib
cp /disk0/apps/hadoop-3.2.2/share/hadoop/tools/lib/hadoop-aws-3.2.2.jar /disk0/apps/hadoop-3.2.2/share/hadoop/common/lib
注意如果将core-site.xml复制到了其他文件夹中,每次更新core-site.xml也要同时更新其他文件夹中的core-site.xml**
hadoop.proxyuser.hadoop.hosts * 设置代理用户,运行hadoop代理如何主机上的任何一个用户组;不做这个配置可能无法使用hive或spark;这个配置在涉及到类似于kerberos认证时作用很大。
hadoop.proxyuser.hadoop.groups *

workers

配置计算节点的主机名

hadoop-1
hadoop-2
hadoop-3
hadoop-4
hadoop-5


hdfs-site.xml
补充两项目
1 超级用户组名 修改成hdfs 默认为supergroup
hdfs文件用户直接使用linux用户,文件权限管理也于linux一致,分为所有人,所有人组,其他三层

dfs.permissions.superusergroup
hdfs

2 可以单独部署yarn代理服务器

yarn.web-proxy.address
hadoop-3:8089

dfs.nameNode.name.dir, dfs.datanode.data.dir: 这两项目前用的时默认配置。这两项都可以配置多目录,但是dfs.datanode.data.dir多目录是用来存放不同的数据,可以将数据分散到不同的磁盘,而dfs.nameNode.name.dir多目录,多出的目录是用来存放namenode数据备份

配置项 说明
dfs.replication 3 文件备份数
dfs.nameservices ns1 core-site.xml中配置的nameservice
dfs.ha.nameNodes.ns1 nn1,nn2 高可用模式下主从nameNode
dfs.nameNode.rpc-address.ns1.nn1
hadoop-1:8020
dfs.nameNode.rpc-address.ns1.nn2
hadoop-2:8020
dfs.nameNode.http-address.ns1.nn1
hadoop-1:9870
dfs.nameNode.http-address.ns1.nn2
hadoop-2:9870
配置各个nameNode的rpc端口及http端口
dfs.nameNode.shared.edits.dir qjournal://hadoop-3:8485;hadoop-4:8485;hadoop-5:8485/ns1 配置journalnode的公共编辑目录,Active nameNode将edit文件写入这个目录,Standby nameNode从这个目录读取文件,从而保证系统状态是最新的。qjournal的q表示quorum,表示这是由诺干个journalNode组成的集群。ns1是core.xml里面配置的nameservice
dfs.journalnode.edits.dir /disk0/data/hadoop/journalnode journalNode 文件存放目录
dfs.client.failover.proxy.provider.ns1 org.apache.hadoop.hdfs.server.
nameNode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods sshfence SSH登录到Active NameNode并且杀死进程,这是主从切换或其他特殊情况下避免脑裂需要采取的措施
dfs.ha.fencing.ssh.private-key-files /disk0/home/hadoop/.ssh/id_rsa SSH登录私钥文件,默认在 家目录/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout 30000
dfs.ha.nn.not-become-active-in-safemode true
dfs.ha.automatic-failover.enabled true

mapred-site.xml

配置项 说明
mapreduce.framework.name yarn 采用yarn调度
mapreduce.application.classpath
$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/* mr类路径

yarn-site.xml

配置项 说明
yarn.nodemanager.aux-services mapreduce_shuffle
yarn.application.classpath /disk0/apps/hadoop-3.2.2/etc/hadoop:
/disk0/apps/hadoop-3.2.2/share/hadoop/common/lib/*:
/disk0/apps/hadoop-3.2.2/share/hadoop/common/*:
/disk0/apps/hadoop-3.2.2/share/hadoop/hdfs:
/disk0/apps/hadoop-3.2.2/share/hadoop/hdfs/lib/*:
/disk0/apps/hadoop-3.2.2/share/hadoop/hdfs/*:
/disk0/apps/hadoop-3.2.2/share/hadoop/mapreduce/lib/*:
/disk0/apps/hadoop-3.2.2/share/hadoop/mapreduce/*:
/disk0/apps/hadoop-3.2.2/share/hadoop/yarn:
/disk0/apps/hadoop-3.2.2/share/hadoop/yarn/lib/*:
/disk0/apps/hadoop-3.2.2/share/hadoop/yarn/*
yarn应用程序类路径配置文件里不能包含换行符
yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,
HADOOP_HDFS_HOME,HADOOP_CONF_DIR,
CLASSPATH_PREPEND_DISTCACHE,
HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
yarn.resourcemanager.ha.enabled true
yarn.resourcemanager.cluster-id cluster1
yarn.resourcemanager.hostname.rm1
hadoop-3
yarn.resourcemanager.hostname.rm2
hadoop-2
yarn.resourcemanager.webapp.address.rm1
hadoop-3:8088
yarn.resourcemanager.webapp.address.rm2
hadoop-2:8088
hadoop.zk.address hadoop-1:2181,hadoop-2:2181,hadoop-3:2181 zookeeper集群
yarn.nodemanager.resource.cpu-vcores 14 这三项是针对nodeManager配置的,设置每个节点能够提供 多少计算核心,含义分别为:
节点的可用于计算的cpu核心数:08*总核心数
最小分配核心数:1
最大分配核心数:08*总核心数*2,通常认为一个核心不会总是在运行一个线程,因此这个值比综合数大
yarn.scheduler.minimum-allocation-vcores 1
yarn.scheduler.maximum-allocation-vcores 26
yarn.nodemanager.resource.memory-mb 61440 这三项是针对nodeManager配置的,设置每个节点能够提供 多少计算内存,含义分别为:
节点的可用于计算的总内存数:60g
最小分配内存数:1g
最大分配内存数:2g
yarn.scheduler.minimum-allocation-mb 1024
yarn.scheduler.maximum-allocation-mb 2048
yarn.app.mapreduce.am.resource.mb 1024 分配给application master的内存:1g
yarn.app.mapreduce.am.command-opts -Xmx1024m
yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.
resourcemanager.scheduler.capacity.CapacityScheduler
yarn调度器采用CapacityScheduler

hadoop-env.sh

修改以下几处,指定JAVA_HOME路径

export JAVA_HOME=/usr/local/jdk1.8.0_201

yarn-env.sh

if [ "$JAVA_HOME" != "" ]; then #echo "run java in $JAVA_HOME" JAVA_HOME=/usr/local/jdk1.8.0_201/ fi

capacity-scheduler.xml

配置项 说明
yarn.scheduler.capacity.maximum-applications 最大运行作业数 20 如果资源不足建议设置较小的值,目前不需要
yarn.scheduler.capacity.maximum-am-resource-percent 0.6 application master资源占比,设置过小会降低作业并发度
yarn.scheduler.capacity.resource-calculator org.apache.hadoop.yarn.util.
resource.DefaultResourceCalculator
DefaultResourceCalculator只按照内存进行分配,DominantResourceCalculator同时考虑内存和cpu核心数分配资源。目前只用DefaultResourceCalculator
yarn.scheduler.capacity.root.queues
default,streaming
yarn.scheduler.capacity.root.default.capacity
80
yarn.scheduler.capacity.root.streaming.capacity
20
yarn.scheduler.capacity.root.default.maximum-am-resource-percent
0.6
yarn.scheduler.capacity.root.streaming.maximum-am-resource-percent0.6
配置队列 修改队列配置后通过yarn rmadmin -refreshQueues使之生效

06 复制Hadoop到其他节点
scp -r /disk0/apps/hadoop-3.2.2 hadoop@hadoop-2:/disk0/apps/

07 格式化nameNode
./bin/hdfs nameNode -format

08 启动集群
./sbin/start-all.sh

04 安装Hive

01 下载hive wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

02 解压缩apache-hive-3.1.2-bin.tar.gz并重命名为hive-3.1.2,路径/disk0/apps/hive-3.1.2

03 修改hive-site.xml文件如下

配置项 说明
javax.jdo.option.ConnectionUserName hive
javax.jdo.option.ConnectionPassword 888888
javax.jdo.option.ConnectionURL jdbc:mysql://hadoop-1:3306/hive?useSSL=false
javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver
hive.metastore.schema.verification false
datanucleus.schema.autoCreateAll true
hive.metastore.uris thrift://hadoop-3:9083 hive metastore端口
hive.metastore.event.db.notification.api.auth false
hive.server2.transport.mode binary
hive.server2.thrift.port 10000 hive server2端口
hive.server2.thrift.bind.host hadoop-3 hive server2主机
hive.server2.active.passive.ha.enable true 开启高可用,实际部署是单点的
hive.server2.authentication NONE 不开启认证

04 vim /etc/profile

HCatalog 是一个表管理工具,可以让其他Hadoop应用使用hive元数据。

export HIVE_HOME=/disk0/apps/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin
export HCAT_HOME=$HIVE_HOME/hcatalog
export PATH=$PATH:$HCAT_HOME/bin

05 启动hive metastore 和 server2 服务

nohup hive --service metastore 2>&1 >> /disk0/logs/hive/metastore/m.log &

nohup hive --service hiveserver2 2>&1 >> /disk0/logs/hive/hiveserver2/hs2.log &

05 安装sqoop

01 下载sqoop wget https://downloads.apache.org/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

02 解压缩sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz并重命名/disk0/apps/sqoop-1.4.7

03 修改配置文件

mv sqoop-env-template.sh sqoop-env.sh

04 vim sqoop-env.sh 添加

HADOOP_HOME可以不指定,因为已经在环境变量中配置

export HIVE_HOME=/disk0/apps/hive-3.1.2

05 关联Hive

cp /disk0/apps/hive-3.1.2/conf/hive-site.xml /disk0/apps/sqoop-1.4.7/conf/

06 vim /etc/profile

export SQOOP_HOME=/disk0/apps/sqoop-1.4.7
export PATH=$PATH:$SQOOP_HOME/bin

06 安装spark

01 下载spark wget https://downloads.apache.org/spark/spark-3.1.1/spark-3.1.1-bin-hadoop3.2.tgz

02 解压缩并重命名为/disk0/apps/spark-3.0.2

03 vim /disk0/apps/spark-3.0.2/conf/spark-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_201
export SCALA_HOME=/disk0/apps/scala-2.12.13
export HADOOP_HOME=/disk0/apps/hadoop-3.2.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_IP=hadoop-3
export SPARK_LOCAL_DIRS=/disk0/disk0/spark
export SPARK_DRIVER_MEMORY=1g

04 vim /etc/profile添加

HADOOP_HOME、HADOOP_CONF_DIR这个环境变量是spark和yarn关联需要的

export JAVA_HOME=/usr/local/jdk1.8.0_201
export SCALA_HOME=/disk0/apps/scala-2.12.13
export HADOOP_HOME=/disk0/apps/hadoop-3.2.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_IP=hadoop-3
export SPARK_LOCAL_DIRS=/disk0/data/spark
export SPARK_DRIVER_MEMORY=1g

05 复制 hive-site 文件到 /disk0/apps/spark-3.0.2/conf 目录下

cp /disk0/apps/hive-3.1.2/conf/hive-site.xml /disk0/apps/spark-3.0.2/conf/

07 安装 dolphinscheduler

01 下载 wget https://www.apache.org/dyn/closer.cgi/incubator/dolphinscheduler/1.3.5/apache-dolphinscheduler-incubating-1.3.5-dolphinscheduler-bin.tar.gz

02 解压缩并重命名/disk0/apps/dolphinscheduler-1.3.5,这个文件是安装文件,建议放在apps_ins_package文件夹下,并不要删除。

03 dolphinscheduler安装过程分发安装文件,及执行作业均需要sudo权限。

04 配置dolphinscheduler数据库

提前创建数据库 hadoop-1:3306/dolphinscheduler,获取账号密码,进入数据库后执行

CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}'; 
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
flush privileges;

05 修改vim /disk0/apps/dolphinscheduler/conf/disk0source.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.datasource.url=jdbc:mysql://hadoop-1:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.username=dolphinscheduler
spring.datasource.password=888888

06 修改运行时环境

vim /disk0/apps/dolphinscheduler/conf/env/dolphinscheduler_env.sh

export HADOOP_HOME=/disk0/apps/hadoop-3.2.2
export HADOOP_CONF_DIR=/disk0/apps/hadoop-3.2.2/etc/hadoop
#export SPARK_HOME1=/opt/soft/spark1
#export SPARK_HOME2=/opt/soft/spark2
export SPARK_HOME3=/disk0/apps/spark-3.0.2
export PYTHON_HOME=/usr/local/bin/python3.7
export JAVA_HOME=/usr/local/jdk1.8.0_201
export HIVE_HOME=/disk0/apps/hive-3.1.2
export HIVE_CONF_DIR=/disk0/apps/hive-3.1.2/conf export
HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
export SQOOP_HOME=/disk0/apps/sqoop-1.4.7
export HCAT_HOME=$HIVE_HOME/hcatalog
#export FLINK_HOME=/opt/soft/flink #export
#DATAX_HOME=/opt/soft/disk0x/bin/disk0x.py
export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME:$SQOOP_HOME/bin:$PATH

07 创建java软连接

sudo ln -s /usr/local/jdk1.8.0_201/jre/bin/java /usr/bin/java

08 修改 conf/config/install_config.conf 文件

# 数据库配置
dbtype="mysql"
dbhost="hadoop-1:3306"
username="dolphinscheduler"
dbname="dolphinscheduler"
password="888888"

# zookeeper集群
zkQuorum="10.60.16.132:2181,10.60.17.127:2181,10.60.15.207:2181"

 # 安装目录
 installPath="/disk0/apps/dolphinscheduler"

 # 部署用户
 deployUser="hadoop" 

# 报警配置
# 邮箱
mailServerHost="smtp.exmail.qq.com"
mailServerPort="465"
mailSender="[email protected]"
mailUser="[email protected]"
mailPassword="888888"
starttlsEnable="false"
sslEnable="true" 
sslTrust="smtp.exmail.qq.com" 

# 资源存储在hdfs上 
resourceStorageType="HDFS" 
# 复制 core-site.xml、hdfs-site.xml 到conf目录 
defaultFS="hdfs://ns1:8020"  

# yarn高可用主机 
yarnHaIps="192.168.0.112,192.168.0.113" 

# 资源存放路径 
resourceUploadPath="/dolphinscheduler" 
# hdfs操作用户
hdfsRootUser="hadoop"

# kerberos config 
# whether kerberos starts, if kerberos starts, following four items need to config, otherwise please ignore 
kerberosStartUp="false" 
# kdc krb5 config file path 
krb5ConfPath="$installPath/conf/krb5.conf" 
# keytab username 
keytabUserName="[email protected]" 
# username keytab path 
keytabPath="$installPath/conf/hdfs.headless.keytab"  

# api server port 
apiServerPort="12345"  

# 安装角色 
ips="hadoop-1,hadoop-2,hadoop-5" 
sshPort="22" 
masters="hadoop-2" 
workers="hadoop-5:default"
alertServer="hadoop-5" 
apiServers="hadoop-1"

09 运行安装脚本

sh install.sh

04 集群各个节点运维操作

目前没有开启resource manager重启功能(会在zookeeper上创建大量节点),因此重启resource manager会导致已有的作业被杀死。因此,重启resource manager之后需要重新启动流作业。

主机名 服务进程 服务启动脚本
hadoop-1 nameNode(active) hdfs --daemon start|stop namenode
ApiApplicationServer dolphinscheduler-daemon start|stop api-server
QuorumPeerMain zkServer start
DFSZKFailoverControllerv hdfs --daemon start|stop zkfc
hadoop-2 nameNode(standby) hdfs --daemon start|stop namenode
resourcemanager(standby) hdfs --daemon start|stop resourcemanager
DFSZKFailoverControllerv hdfs --daemon start|stop zkfc
QuorumPeerMain zkServer start
MasterServer dolphinscheduler-daemon start|stop master-server
hadoop-3 JournalNode hdfs --daemon start|stop journalnode
ResourceManager(active) hdfs --daemon start|stop namenode
QuorumPeerMain zkServer start
hive-server2 nohup hive --service hiveserver2 2>&1 >> /disk0/logs/hive/hiveserver2/hs2.log &
hive-metastore nohup hive --service metastore 2>&1 >> /disk0/logs/hive/metastore/m.log &
hadoop-4 datanode hdfs --daemon start|stop datanode
nodemanager hdfs --daemon start|stop nodemanager
JournalNode hdfs --daemon start|stop journalnode
hadoop-5 datanode hdfs --daemon start|stop datanode
nodemanager hdfs --daemon start|stop nodemanager
JournalNode hdfs --daemon start|stop journalnode
WorkerServer dolphinscheduler-daemon start|stop worker-server
LoggerServer dolphinscheduler-daemon start|stop logger-server

其他命令

命令 执行机器 说明
sbin/start-all.sh 主节点 启动所有的Hadoop守护进程。包括nameNode、 Secondary nameNode、DataNode、ResourceManager、NodeManager
sbin/stop-all.sh 主节点 停止所有的Hadoop守护进程。包括nameNode、 Secondary nameNode、DataNode、ResourceManager、NodeManager
sbin/start-dfs.sh 主节点 启动Hadoop HDFS守护进程nameNode、SecondarynameNode、DataNode
sbin/stop-dfs.sh 主节点 停止Hadoop HDFS守护进程nameNode、SecondarynameNode和DataNode
sbin/start-yarn.sh 主节点 启动ResourceManager、NodeManager
sbin/stop-yarn.sh 主节点 停止ResourceManager、NodeManager
hdfs haadmin -getServiceState nn1 检查某个nameNode处于active或stand by状态
yarn rmadmin -getAllServiceState 获取各个resource manager的状态
hdfs haadmin -failover --forcefence --forceactive nn2 nn1 hdfs强制切换(慎重)
yarn rmadmin -transitionToActive -forcemanual rm2 yarn强制切换(慎重)
hdfs dfsadmin -report 获取集群状态报告
hdfs fsck 文件或目录 检查HDFS上文件和目录的健康状态、获取文件的block信息和位置信息等
hdfs zkfc -formatZK 重新初始化故障转移,完成在zookeeper上创建相关节点的操作

05 登录节点的操作

添加用户切换命令别名

nano ~/.bashrc 添加 alias hadoop=‘sudo su hadoop’

06 启动hive beeline

/disk0/apps/hive-3.1.2/bin/beeline -u jdbc:hive2://hadoop-3:10000 -n hadoop --maxWidth=100 --maxColumnWidth=100

07 其他操作

按文件写入时间排序查看文件
hadoop fs -ls /user/hive/warehouse/test.db/test/p_d=2021-05-05 | awk ‘{print $5,$6,$7,$8}’ | sort -t ’ ’ -k2,3

你可能感兴趣的:(hadoop,big,data,spark)