集群搭建,包含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。
主机名 | 内存 | 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状态,接管集群。这种情况下,应当迅速排除主节点故障,重启主节点。
赋予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 |
操作用户 | hadoop | |
---|---|---|
命令 | systemctl disable firewalld.service | |
systemctl stop firewalld.service | ||
vim /etc/selinux/config | 修改 SELINUX=disabled |
五台主机之间配置免密登录,参考以下步骤
操作用户 | 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文件中 |
#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
创建 /disk0/apps目录(软件安装),/disk0/data目录(数据存储) 及 /disk0/logs目录(日志存放)
各个软件的数据目录,日志目录修改方法不同,有些软件没有提供直观的修改目录的方法,建议直接使用默认目录。
运维安装,自行安装可以参考以下步骤
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 |
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
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 &
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
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/
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
目前没有开启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上创建相关节点的操作 |
添加用户切换命令别名
nano ~/.bashrc 添加 alias hadoop=‘sudo su hadoop’
/disk0/apps/hive-3.1.2/bin/beeline -u jdbc:hive2://hadoop-3:10000 -n hadoop --maxWidth=100 --maxColumnWidth=100
按文件写入时间排序查看文件
hadoop fs -ls /user/hive/warehouse/test.db/test/p_d=2021-05-05 | awk ‘{print $5,$6,$7,$8}’ | sort -t ’ ’ -k2,3