
HDFS常用命令hdfs dfs hadoop fs# 查看已用空间hdfs dfs-du1. hdfs dfs-du-s-h/testyan_project# 查看总大小2. hdfs dfs-du-h/testyan_project# 列出每个文件和目录的大小# 查看配额允许使用的最大空间hdfs dfs-count-q3. hdfs dfs-count-q-v-h/testyan_project# | QUOTA | REM_QUOT | SPACE_QUOTA | REM_SPACE_QUOTA | DIR_COUNT | FILE_COUNT | CONTENT_SIZE | PATHNAME |# | none | inf | 6T | 940.9G | 9 | 16.9K | 2.5T | /testyan_project |# QUOTA 和 REM_QUOTA 代表命名配额、剩余命名配置none和inf代表无限制# SPACE_QUOTA 和 REM_SPACE_QUOTA 代表空间配额、剩余空间配额总共6T剩余940G空间可用# CONTENT_SIZE 代表当前已使用的空间大小# 将文件推送到hdfs中4. hdfs dfs-put{file}/testyan_project# 删除到hdfs中的文件5. hdfs dfs-rm/testyan_project/{file}HDFS Web UIhttp://{NN_ip}:9870查看hdfs文件系统情况。配置文件${HADOOP_HOME}/etc/hadoop/ ├── core-site.xml# 全局配置├── hdfs-site.xml# HDFS 专属配置├── workers# DataNode 节点列表└── hadoop-env.sh# 环境变量启停服务# 主节点执行以下命令是对所有节点的操作${HADOOP_HOME}/sbin/start-dfs.sh# 启动hdfsNameNode、DataNode# 单节点启停# 启动namenode${HADOOP_HOME}/sbin/hadoop-daemon.sh start/stop namenode# 启动datanode${HADOOP_HOME}/sbin/hadoop-daemon.sh start/stop datanodeYARNYARN Web UIhttp://{RM_ip}:8088/cluster# 查看作业调度情况、可跳转到作业运行日志页面Spark on YARN 部署模式下Spark 没有需要启动/停止的常驻进程只有作业运行时的临时 Container 进程完全依赖 YARN 的资源管理。yarn8088管理资源给多少cpu、内存等spark计算框架yarn8088有ApplicationMasterDriver日志spark有Executor和任务级别日志YARN 8088是资源调度中心Spark是任务执行监控。Spark作业运行在 YARN上时YARN提供资源Spark执行计算二者通过 ApplicationMaster 链接互通。日志查看 作业若是driver正常executor失败正常点击history查看作业日志 若是driver失败则点击history后需将网址yarn:8088-spark_history_ip:18080再查看(spark_history_ip和yarn的RM可能是同一个ip)扩展内容以下均为AI侵删spark的部署方式Spark Standalone 模式、Spark on Mesos 模式、Spark on Kubernetes 模式k8s主流、Spark on YARN模式以Spark on YARN模式举例driver的运行模式如下表格模式Driver 在哪里ApplicationMaster 是什么YARN 8088 看到的 AM 日志yarn-cluster在 AM 容器内AM 内运行 DriverAM 和 Driver 基本是同一个 JVM/容器AM 日志通常就是 Driver 日志yarn-client在提交作业的客户端机器上AM 只是ExecutorLauncher负责申请 ExecutorAM 日志不是 Driver 日志Driver 日志在客户端YARN 的 ResourceManagerWeb UI 8088是集群资源调度中心ApplicationMaster 是每个 YARN 应用的“代理人”Spark Driver 是 Spark 应用的大脑Executor 是干活的工人。cluster 模式下 Driver 住在 ApplicationMaster 容器里所以 AM 日志约等于 Driver 日志client 模式下 Driver 在客户端AM 不是 Driver。Spark on YARN 大致流程1、提交 Spark 应用2、RM 分配一个容器启动 ApplicationMaster3、cluster 模式下AM 内启动 Spark Driver4、Driver / AM 向 RM 申请 Executor 容器5、RM 把容器分配给 NodeManager6、NodeManager 启动 Executor7、Executor 向 Driver 注册8、Driver 把 Task 调度到 Executor9、Executor 执行 Task向 Driver 汇报10、应用完成后AM 注销资源释放配置文件${HADOOP_HOME}/etc/hadoop/ ├── yarn-site.xml# YARN 配置├── workers# NodeManager 节点列表同HDFS└── mapred-site.xml# MapReduce 配置如果用到启停服务# 主节点执行以下命令是对所有节点的操作${HADOOP_HOME}/sbin/start-yarn.sh# 启动yarnResourceManager、NodeManager# 单节点启停# 启动resourcemanager${HADOOP_HOME}/sbin/yarn-daemon.sh start resourcemanager# 启动nodemanager${HADOOP_HOME}/sbin/yarn-daemon.sh start nodemanageryarn日志存储和自动清理Yarn的应用程序日志主要存储在本地磁盘NodeManager节点的本地目录yarn.nodemanager.log-dirs文件系统HDFS/NFS如果启用了日志聚合默认启用resourcemanager节点vi $HADOOP_HOME/etc/hadoop/yarn-site.xml 有2个关键配置项yarn.log-aggregation-enable --默认true代表启动聚合日志 yarn.nodemanager.remote-app-log-dir ---配置聚合日志的路径当启动聚合日志后会收集每个nodemanager节点的日志到一个指定的文件系统上如HDFS或NFS。# 可以通过ResourceManager Web UI查看全量配置项1.resourcemanager配置项查看: ResourceManager Web UI → Tools → 查看Configuration http//:{resourcemanagerIp}:8088/conf2.nodemanager配置项查看 ResourceManager Web UI → Nodes → 点击NodeManager → 查看Configuration http//:{nodemanagerIp}:8042/conf注意事项yarn.log.dir来自于yarn-default.xml文件 这个xml不是一个独立的文件而是被“藏”在了 Hadoop 的 Jar 包里我们可以去计算节点查询ps -ef|grep NodeManager这个启动脚本中显示了yarn.log.dir的值。当SPARK计算框架存在时spark的默认存储spark.yarn.app.container.log.dir配置项是$HADOOP_HOME/logs/userlogs这个会覆盖网页中你看到的yarn.nodemanager.log-dirs路径它俩大多时候是同一个值日志清理逻辑配置vi $HADOOP_HOME/etc/hadoop/yarn-site.xml!-- 本地日志保留时间秒 --propertynameyarn.nodemanager.log.retain-seconds/namevalue604800/value!-- 默认7天 --/property!-- 是否启用日志聚合 --propertynameyarn.log-aggregation-enable/namevaluetrue/value/property!-- 聚合日志在HDFS或NFS的保留时间秒 --propertynameyarn.log-aggregation.retain-seconds/namevalue2592000/value!-- 默认30天 --/property!-- 聚合日志检查间隔秒 --propertynameyarn.log-aggregation.retain-check-interval-seconds/namevalue-1/value!-- 默认-10.1 * retain-seconds --/property!-- 本地日志删除延迟秒 --propertynameyarn.nodemanager.delete.debug-delay-sec/namevalue0/value!-- 默认为0立即删除 --/property配置项存储位置存储内容生命周期yarn.nodemanager.local-dirsNodeManager/data1/yarn任务运行的中间临时数据shuffle数据等 临时任务结束后即清理 计算任务的本地工作空间hadoop.tmp.dirNodeManager/data1/yarn/hadoop-tmpHadoop各组件的通用临时文件 临时 其他组件如HDFS、MapReduce的临时文件基础目录yarn.nodemanager.log-dirsNodeManager${yarn.log.dir}/userlogs任务的本地运行日志stdout/stderr等 临时可配置保留时长 供调试或实时查看任务日志yarn.nodemanager.remote-app-log-dirHDFS或其他分布式存储NFS等file://xxx/yarnlogs任务日志聚合后的最终存储路径 永久除非手动清理 集中存储所有任务的日志供历史查询SPARK部署spark服务的节点就是集群的计算节点每个计算节点都需要配置yarn服务但是配置了yarn可以不作为计算节点上述提到的spark_history_ip:18080就是spark日志网页计算节点上的配置文件路径$SPARK_HOME/conf/spark-defaults.conf提交作业脚本文件路径 $SPARK_HOME/bin/spark-submitspark日志目录spark.eventLog.dir file:///autofs/xxx/sparklogSpark History Server服务是用于显示这个日志它的配置项spark.history.fs.logDirectory必须和spark.eventLog.dir的路径指向一致该服务只需要在spark-submit提交作业(Driver端)的节点部署不要在多个计算节点重复部署# Spark History Server服务启停只需要在driver端节点重启:$SPARK_HOME/sbin/stop-history-server.sh$SPARK_HOME/sbin/start-history-server.sh配置spark作业的重试逻辑配置项含义作用层级生效范围spark.yarn.maxAppAttemptsYARN Application的最大尝试次数Application级别YARN ResourceManager决定是否重试spark.yarn.max.executor.failures允许的Executor失败的最大数量Application内部Spark Driver决定何时杀死整个应用spark.task.maxFailures单个Task失败的最大重试次数Task/Stage级别Spark Scheduler决定何时标记Task/Stage失败如不想要作业失败重试将spark.yarn.maxAppAttempts配置为1。该配置只需要在driver端节点配置配置sparklog的自动清理逻辑($SPARK_HOME/conf/spark-env.sh文件)配置项含义建议值spark.history.fs.cleaner.enabled是否启用历史文件自动清理truespark.history.fs.cleaner.interval清理任务执行间隔1dspark.history.fs.cleaner.maxAge事件日志最大保留时间7dspark.history.fs.cleaner.maxNum最多保留的作业日志数1500-2000spark.history.retainedApplicationsWeb控制Spark历史作业显示数http://{spark_history_ip}:18080/1000这些配置是控制 spark.eventLog.dir 目录日志。注意这里的web显示不是yarn上的web显示yarn上的显示数量由yarn-site.xml中yarn.resourcemanager.max-completed-applications字段控制yarn读取的是yarn.nodemanager.remote-app-log-dir配置的日志是上述提到的聚合日志而spark读取的是事件日志结构化数据。两个独立的存储系统但Spark History依赖YARN来获取容器日志所以YARN保留时间应该≥Spark保留时间。HBASE分布式NoSQL数据库基于Hadoop的HDFS存储数据。硬盘——HDFS(底层物理存储层)——HBASE(数据管理/访问层)数据以HFile二进制格式存储在HDFS上HBASE负责数据组织、缓存、索引、读写接口等。研发人员必须通过 HBase API操作数据不能直接读写HDFS。常用命令ssh{hbase ip}# 访问hbase节点hbase shell# 进入shelllist# 查看所有表只有表名信息describe表名# 查看表结构如describe _testyanproject_testyan_ORDER_25_num_sparkscan表名# 查看表内容不推荐内容很多退出hbase shell由于HBase表在HDFS上有对应的目录可通过查看HDFS目录的创建时间来近似了解表的创建时间。hdfs dfs-ls/hbase/data/default/表名HMaster Web UIhttp://{hbase_ip}:16010/可查看集群状态是否正常、启动时间、HRegionServer数量、Memory大小、所有表信息等配置文件${HBASE_HOME}/conf/hbase-site.xml# HBase 核心配置包含节点信息${HBASE_HOME}/conf/regionservers# RegionServer 节点列表启停服务# 主节点执行以下命令是对所有节点的操作zk除外# 启动顺序HDFS → ZooKeeper → HBase${HADOOP_HOME}/sbin/start-dfs.sh# 启动hdfsNameNode、DataNode${ZOOKEEPER_HOME}/bin/zkServer.sh start# 启动zookeeperQuorumPeerMain${HBASE_HOME}/bin/start-hbase.sh# 启动hbaseHMaste、HRegionServer# 停止顺序HBase → ZooKeeper → HDFS${HBASE_HOME}/bin/stop-hbase.sh# 停止hbase${ZOOKEEPER_HOME}/bin/zkServer.sh stop# 停止zookeeper${HBASE_HOME}/sbin/stop-dfs.sh# 停止hdfs# 单节点启停# 启停master(进程名HMaster)hbase-daemon.sh start/stop master# 启停regionserver(进程名HRegionServer)hbase-daemon.sh start/stop regionserver异常问题处理有一次出现启动hbase后过1min HMASTER又自动停掉排查发现是hdfs的active节点不正确# 谨慎使用hdfs haadmin-transitionToActive{hdfs_ip}# 强制将一个节点设置为hdfs的namenode active# 查询active状态已设置正确http://{hdfs_ip}:9870# 再重新启动start-hbase.sh启动后检查hbase状态http://{hbase_ip}:16010/master-statushadoop集群环境运维时节点免密配置更新环境时若需输入密码通过以下命令这个给节点做免密foripinhost{201..300};doecho$ip;sshpass-ppasswordssh-copy-id hadoop$ip;done或者直接拷贝.ssh目录 以下root可换为任意用户rsync-ral/root/.ssh$ip:/root/