大数据Hadoop运维应用实践——Hadoop大数据平台基础与架构(hadoop伪分布式的安装部署)

发布时间:2026/7/11 13:43:35

大数据Hadoop运维应用实践——Hadoop大数据平台基础与架构(hadoop伪分布式的安装部署) 一、Hadoop的简介1.1、Hadoop是什么Hadoop 是 Apache 基金会维护的开源分布式存储与分布式计算框架。支持在普通商用服务器集群上依托简易编程模型对海量数据集进行分布式处理集群可单机横向扩展至上千台节点不在硬件层面追求高可用而是在应用层自动检测、处理故障实现廉价集群上的可靠分布式运算。Hadoop 核心四大模块✅Hadoop Common公共基础工具类库其余组件依赖底层工具✅HDFSHadoop Distributed File System分布式文件系统提供高吞吐的数据访问能力负责海量数据存储✅YARN集群资源管理、作业调度框架Hadoop2.x 及以后引入✅MapReduce基于 YARN 运行的大规模数据集并行批处理引擎。狭义 Hadoop 4 个核心组件Hadoop Common、HDFS、Yarn、MapReduce广义 Hadoop Hadoop 生态圈Hive、HBase、Sqoop、Spark 等周边组件集合。1.2、Hadoop的生态圈介绍Hadoop生态圈构成说明Oozie(工作流调度器Oozie是一个基于工作流调度的服务器可以在上面运行Hadoop的Map Reduce和Pig任务。它其实就是一个运行在Java Servlet容器比如Tomcat中的Java Web应用。对于Oozie来说工作流就是一系列的操作比如Hadoop的MR以及Pig的任务之间的依赖如何控制这些依赖是oozie的核心所谓依赖就是一个操作的输入依赖于前一个任务的输出只有前一个操作完全完成后才能开始第二个。Hive数据仓库Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。Hive让不熟悉MapReduce开发人员也能编写数据查询语句然后这些语句被翻译为Hadoop上面的MapReduce任务。Pigad-hoc脚本Pig定义了一种数据流语言—Pig Latin它是MapReduce编程的复杂性的抽象其编译器将Pig Latin翻译成MapReduce程序序列将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。Mapreduce分布式计算框架MapReduce是一种分布式计算模型用以进行大数据量的计算。它屏蔽了分布式计算框架细节将计算抽象成map和reduce两部分其中Map对数据集上的独立元素进行指定的操作生成中间结果。Reduce则对中间结果中相同“键”的所有“值”进行规约以得到最终结果。Spark(内存计算模型)Spark拥有Hadoop MapReduce所具有的优点但不同于MapReduce的是——Job中间输出结果可以保存在内存中从而不再需要读写HDFS因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。和Hadoop相比Spark可以让程序在内存中运行时速度提升100倍或者在磁盘上运行时速度提升10倍。Kafka分布式消息队列Kafka是一种高吞吐量的分布式发布/订阅消息系统它的最大的特性就是可以实时的处理大量数据以满足各种需求场景如基于hadoop平台的数据分析、低时延的实时系统、storm/spark流式处理引擎等。kafka现在它已被多家大型公司作为多种类型的数据管道和消息系统使用。Sqoop(数据ETL/同步工具Sqoop是SQL-to-Hadoop的缩写主要用于传统数据库和Hadoop之间传输数据。数据的导入和导出本质上是Mapreduce程序充分利用了MR的并行化和容错性。Sqoop利用数据库技术描述数据架构用于在关系数据库、数据仓库和Hadoop之间转移数据。Flume日志收集工具Flume是Cloudera开源的日志收集系统具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流在具体的数据流中数据源支持在Flume中定制数据发送方从而支持收集各种不同协议数据。同时Flume数据流提供对日志数据进行简单处理的能力如过滤、格式转换等。此外Flume还具有能够将日志写往各种数据目标可定制的能力。总的来说Flume是一个可扩展、适合复杂环境的海量日志收集系统。当然也可以用于收集其他类型数据Zookeeper分布式协作服务Zookeeper可理解为一个和事佬的角色。解决分布式环境下的数据管理问题如统一命名状态同步集群管理配置同步等HBASE分布式列存数据库Hbase是一个非关系型数据库NoSQL是按列来存储。HBase提供了对大规模数据的随机、实时读写访问同时Hbase使用HDFS来存储数据因此它可以使用MapReduce机制来处理数据它将数据存储和并行计算完美地结合在一起。HBase的典型的应用场景就是数据量要足够多如果有十亿及百亿行数据那么Hbase是一个很好的选择同时HBase对于持续的大量的插入操作可以达到每秒百万的吞吐量。Yarn(分布式资源管理器Yarn是下一代 Hadoop 计算平台yarn是一个通用的运行框架用户可以编写自己的计算框架在该运行环境中运行。该框架提供了以下几个组件资源管理包括应用程序管理和机器资源管理资源双层调度容错性各个组件均有考虑容错性扩展性可扩展到上万个节点HDFSHadoop分布式文件系统HDFS是Hadoop体系中数据存储管理的基石。它是一个高度容错的分布式文件系统能检测和应对硬件故障用于在低成本的通用硬件上运行。它提供了一次写入多次读取的机制数据以块的形式同时分布在集群不同物理机器上。1.3、Hadoop有啥用Hadoop的核心能力说明分布式海量数据存储HDFS 能力HDFS 面向超大文件、流式读取、一次写入多次读取场景设计将大文件切分为 Block3.x 默认 128MB分散存储在集群不同节点默认 3 副本机制3.x 支持纠删码节省存储空间硬件故障不丢失数据可存储结构化、半结构化、非结构化数据日志、文本、音视频、传感器数据等是传统数据湖最主流底层存储。分布式离线并行计算MapReduce/YARN贯彻移动计算而非移动数据思想将计算任务下发至数据所在节点减少网络 IOYARN 统一管理 CPU、内存资源允许多种计算引擎MapReduce、Spark、Flink共享一套 Hadoop 集群资源。支撑上层大数据生态平台作为底层底座支撑数据仓库 (Hive)、列式存储、离线数据挖掘、用户行为分析、日志平台、机器学习数据集存储。1.4、Hadoop的优缺点Hadoop的优点说明✅高可扩展性集群支持横向扩容数据、计算资源随节点增加线性增长集群规模可从单台服务器平滑扩展至数千节点无需重构业务。✅高容错、高可靠官网明确假设硬件故障是常态而非特例HDFS数据多副本存放于不同 DataNode节点宕机自动触发副本复制YARN/MapReduce任务失败自动重试、资源重新调度单个节点故障不会导致整体作业失败。✅低成本适配普通商用硬件无需小型机、高端存储阵列运行在通用 x86 服务器开源无软件授权费用大幅降低海量数据存储基础设施成本。✅高吞吐量适合大批量数据扫描HDFS 优化流式数据读取优先保障大规模批量数据读写带宽适合一次性读取 TB/PB 级日志、历史数据。✅数据格式兼容性强不限制数据结构支持结构化、半结构化、非结构化原始数据适合搭建企业数据湖。✅生态极其成熟二十余年工业验证配套工具完善数据接入 (Sqoop/Flume)、SQL 查询 (Hive)、KV 数据库 (HBase)、任务调度 (Oozie) 等。Hadoop的缺点说明❌不适合低延迟随机访问、实时交互式查询HDFS 设计目标是高吞吐牺牲访问时延面向批量流式读取不适合毫秒 / 秒级单点随机查询。原生 MapReduce 作业启动、调度开销大通常延迟分钟级别。❌HDFS 不适合大量小文件场景NameNode 将文件元数据全部加载至内存海量 KB 级小文件会耗尽 NameNode 内存严重压垮集群。官网文档明确 HDFS 面向大文件优化。❌HDFS 仅支持一次写入、多次读取WORM原生不支持文件随机修改、频繁覆盖写入仅支持追加写入不适合 OLTP 频繁更新业务数据。❌运维复杂度高集群节点数量多NameNode、ResourceManager 主节点 HA 配置、故障排查、容量规划、参数调优门槛高需要专职大数据运维。❌MapReduce 原生计算性能偏弱MapReduce 中间结果频繁落地磁盘迭代计算效率低下目前工业界大量使用 Spark 替代 MapReduce 作为计算引擎但依然复用 HDFS/YARN。❌资源开销大小规模数据不划算几十 GB 以内小规模数据场景Hadoop 集群部署、启动资源开销远高于单机程序性价比极低。1.5、Hadoop的适用与不适用场景✅Hadoop的适用场景海量离线日志存储与分析服务器日志、APP 埋点、用户行为日志TB/PB 级历史日志归档企业离线数据仓库、数据湖底层存储底座Hive 数据仓库底层一般基于 HDFS大规模数据挖掘、离线机器学习特征数据集存储历史数据长期归档、冷数据存储一次采集反复统计分析物联网海量传感器原始数据存储、批量统计基因、气象、天文等科研超大文件批量处理非结构化数据集中存储图片、原始录音、文档素材库❌Hadoop的不适用场景低延迟在线业务、实时查询系统电商订单查询、实时风控、毫秒级交互式报表高频随机更新、在线事务 OLTP 业务MySQL、PostgreSQL 业务系统海量小文件存储千万级、亿级细碎文件适合对象存储如 S3、Ozone小规模数据集GB 级别以内简单运算强实时流式计算实时大屏、实时数据流优先 FlinkHadoop 无法单独完成实时处理二、Hadoop的伪分布式部署hadoop的伪分布式只适用于构建简单的开发环境或用于简单的功能测试。2.1、Hadoop发行版介绍及其选型建议目前Hadoop发行版非常多如Intel发行版、华为发行版、Cloudera发行版CDH、Hortonworks版本等所有发行版均是基于Apache Hadoop衍生出来的之所以有这么多的版本是由于Apache Hadoop的开源协议决定的任何人可以对其进行修改并作为开源或商业产品发布/销售。目前不收费的Hadoop版本说明Apache Hadoop最原始的版本所有发行版均基于这个版本进行改进该版本采用Apache License2.0不需要向 Apache 基金会支付任何费用允许企业内部生产商用只需要遵守协议保留版权声明、修改代码做好标记。CDHCloudera’s Distribution Including Apache Hadoop简称CDHCloudera 收购 Hortonworks 之后在2021-01-31执行新政策新版本不再开放公开免费仓库CDH5、CDH6历史旧版本CDPCloudera Data PlatformCDH 后继新版❌不再提供免费社区版全部需要订阅授权不属于免费版本Cloudera Manager Express免费版无 License 即可安装不限节点基础监控、部署功能免费【限制企业高级特性数据审计、备份容灾、Navigator 数据治理、LDAP 单点登录等需要购买 Enterprise 订阅】致命现状Cloudera 官网已经封锁公开 yum/apt 源无法直接从官方渠道下载 CDH5/CDH6 安装包网络流传第三方镜像包仅适合学习测试生产环境存在安全补丁无法获取、无官方维护风险。目前Cloudera已经跟Hortonworks合并为一家公司CDP是主推平台属于收费项目。HDPHortonworks Data Platform简称HDP。整套平台 100% 开源无限制配套 Ambari 可视化部署工具HDP2.x、HDP3.x 全部基于 Apache 开源组件无组件功能阉割商业模式软件永久免费厂商只售卖技术支持服务不收取软件 License现状Hortonworks 被 Cloudera 收购HDP 全线停止新版本开发EOL不再更新安全补丁资源历史安装包仍然可以在存档站点找到但新项目不推荐上生产。Hadoop的选型建议初学者建议选择apache hadoop发行版。生产环境推荐HDP或CDH发行版本。2.2、Hadoop伪分布式的安装准备Hadoop伪分布式的安装规划说明《1》安装规划伪分布式安装Hadoop只需要一台机器即可硬件配置最低为4核CPU8G内存《2》Hadoop版本3.5.0《3》JDK版本≥17本文采用openjdk21《4》服务器系统版本AlmaLinux9.32.2.1、安装部署openjdk21环境#安装java的Jdk、jre环境有两种方法 #方法一直接在线安装java的JDK包如我这里安装java-21-openjdk-devel #注意可以先检查当前Linux是否支持指定版本的jdk环境(如没有jdk17则无法使用yum安装需手动安装) yum list | grep jdk yum install java-21-openjdk-devel -y #方法二直接手动安装配置指定版本java的jdk和jre #手动安装openjdk21实操流程其余版本的Jdk安装方法也一样 #1-检查Linux支持的jdk环境(若没有jdk21则无法使用yum安装需手动安装) yum list | grep jdk #2-下载openjdk21的压缩包【注意这个openjdk的下载链接需要自己到红帽官网 https://developers.redhat.com/products/openjdk/download 获取我这里提供的会失效】 wget https://access.cdn.redhat.com/content/origin/files/sha256/1a/1ae9385bde47c7928dc9b328eee8771e5f3ab94f425d19940fe7b105ac882bce/java-21-openjdk-21.0.9.0.10-1.portable.jdk.x86_64.tar.xz?_auth_1761740868_99dc162417e4a3dd4e27ea8b7bc669e9 -c 0 -P /data #3-解压openjdk21并修改名称 cd /data/ tar -xvf java-21-openjdk-21.0.9.0.10-1.portable.jdk.x86_64.tar.xz?_auth_1761740868_99dc162417e4a3dd4e27ea8b7bc669e9 mv java-21-openjdk-21.0.9.0.10-1.portable.jdk.x86_64 openjdk2109010 #4-编辑环境配置文件并添加openjdk21的环境变量 #这里创建一个/data/openjdk的软链接指向openjdk21就可以很灵活的升级openjdk而不用再修改环境配置了 ln -s /data/openjdk2109010 /data/openjdk vi /etc/profile #openjdk enviroment export JAVA_HOME/data/openjdk export JRE_HOME$JAVA_HOME/jre export CLASSPATH.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH$JAVA_HOME/bin:$PATH #5-让修改的环境变量生效 source /etc/profile #6-查看java版本信息 echo $JAVA_HOME echo $PATH java -version #7-安装openjdk21对应的jre #7.1-下载openjdk21对应的jre二进制压缩包 wget https://access.cdn.redhat.com/content/origin/files/sha256/7e/7e3a9fccc57747b82be044096d7a10ebfd6ef6333e3fe351bcfb4dd8a44abbcc/java-21-openjdk-21.0.9.0.10-1.portable.jre.x86_64.tar.xz?_auth_1761741095_3bd83086c5c03e98940d93d72265bed6 -c o -P /data #7.2-进入/data目录并解压下载好的jre21包 cd /data tar -xvf java-21-openjdk-21.0.9.0.10-1.portable.jre.x86_64.tar.xz?_auth_1761741095_3bd83086c5c03e98940d93d72265bed6 #7.3-将解压好的jre17复制一份到openjdk21目录中并修改名字为jre cp -r java-21-openjdk-21.0.9.0.10-1.portable.jre.x86_64 openjdk2109010/ cd openjdk2109010/ mv java-21-openjdk-21.0.9.0.10-1.portable.jre.x86_64 jre #7.4-查看jre的路径信息 echo $JRE_HOME2.2.2、下载Hadoop二进制安装包#下载hadoop 3.5.0 wget https://dlcdn.apache.org/hadoop/common/hadoop-3.5.0/hadoop-3.5.0.tar.gz -c -P /data2.2.3、配置Hadoop#配置Hadoop #1-解压Hadoop二进制压缩包并设置软链接指向解压好的hadoop,这样后续升级hadoop就会比较方便 cd /data tar -zxvf hadoop-3.5.0.tar.gz -C /data mkdir -p /data/hadoop mv /data/hadoop-3.5.0 /data/hadoop ln -s /data/hadoop/hadoop-3.5.0 /data/hadoop/current #2-创建hadoop用户并给hadoop的二进制文件夹授权且将当前hadoop的配置都复制一份到/etc目录下配置统一方便维护 useradd hadoop id hadoop chown -R hadoop:hadoop /data/hadoop cp -rp /data/hadoop/current/etc/hadoop /etc #3-配置hadoop环境 #3.1-编辑全局环境 vi /etc/profile #Hadoop Env export HADOOP_HOME/data/hadoop/current export HADOOP_CONF_DIR/etc/hadoop/ export PATH$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH #3.2-让修改的环境变量生效 source /etc/profile #3.3-查看hadoop环境信息 echo $HADOOP_HOME echo $HADOOP_CONF_DIR2.2.4、修改系统的主机名称#修改系统的主机名称 #1.1-将192.168.1.120主机的名称修改为hadoop01 hostnamectl set-hostname hadoop01 #1.2-修改hosts配置【只执行一次】 cp -p /etc/hosts /etc/hosts.bak.$(date %Y%m%d) echo 192.168.1.120 hadoop01/etc/hosts #1.3-让修改的主机名称生效 systemctl restart systemd-hostnamed exec bash2.3、Hadoop的伪分布式部署Hadoop的伪分布式https://hadoop.apache.org/docs/r3.5.0/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation2.3.1、配置【core-site.xml】#1-编辑/etc/hadoop/core-site.xml文件完整内容如下 ?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration !-- 官方核心参数 fs.defaultFS 作用全局默认文件系统所有组件HDFS/YARN/HttpFS默认使用该HDFS地址 URI格式规范hdfs://主机名:RPC端口 Hadoop3 NameNode默认RPC端口9000保持官方默认不修改 我的hosts里主机名是 hadoop01因此填写 hadoop01:9000 -- property namefs.defaultFS/name valuehdfs://hadoop01:9000/value /property !-- hadoop.tmp.dirHadoop所有临时数据基础目录 官方警告不要使用默认/tmp系统定时清理会销毁HDFS元数据 路径自行创建mkdir -p /data/hadoop/data/tmp -- property namehadoop.tmp.dir/name value/data/hadoop/data/tmp/value /property /configuration #2-创建hadoop所有临时数据基础目录 mkdir -p /data/hadoop/data/tmp chown -R hadoop:hadoop /data/hadoop chmod 755 /data/hadoop/data/tmp2.3.2、配置【hdfs-site.xml】#1-编辑/etc/hadoop/hdfs-site.xml文件完整内容如下 ?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration !-- 伪分布式副本数固定1 -- property namedfs.replication/name value1/value /property !-- NameNode Web管理页面 -- property namedfs.namenode.http-address/name valuehadoop01:9870/value /property !-- SecondaryNameNode Web地址 -- property namedfs.namenode.secondary.http-address/name valuehadoop01:9868/value /property !-- NN元数据存储路径 -- property namedfs.namenode.name.dir/name value/data/hadoop/data/namenode/value /property !-- DN数据块存储路径 -- property namedfs.datanode.data.dir/name value/data/hadoop/data/datanode/value /property !-- --HDFS回收站单位分钟14401天0关闭回收站【这里设置回收站保留7天】7天后自动清理 -- property namefs.trash.interval/name value10080/value /property property namefs.trash.checkpoint.interval/name value1440/value !-- 每天生成一次快照≤10080 -- /property !-- 学习环境关闭权限检查生产改为true -- property namedfs.permissions.enable/name valuetrue/value /property property namedfs.permissions.superusergroup/name valuesupergroup/value /property /configuration #2-创建hadoop所有临时数据基础目录 mkdir -p /data/hadoop/data/namenode mkdir -p /data/hadoop/data/datanode chown -R hadoop:hadoop /data/hadoop2.3.3、配置【mapred-site.xml】#1-编辑/etc/hadoop/mapred-site.xml文件完整内容如下 ?xml version1.0? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration !-- MR运行框架交给YARN调度 -- property namemapreduce.framework.name/name valueyarn/value /property !-- 历史服务器RPC通信地址 -- property namemapreduce.jobhistory.address/name valuehadoop01:10020/value /property !-- 历史服务器Web页面地址 -- property namemapreduce.jobhistory.webapp.address/name valuehadoop01:19888/value /property !-- 官方标准裸路径自动复用core-site fs.defaultFS无需硬编码hdfs URI -- property namemapreduce.jobhistory.done-dir/name value/history/done/value /property property namemapreduce.jobhistory.intermediate-done-dir/name value/history/done_intermediate/value /property !-- 历史日志自动清理配置Apache Hadoop3原生有效参数 -- property namemapreduce.jobhistory.cleaner.enable/name valuetrue/value /property !-- 历史日志保留7天单位毫秒 -- property namemapreduce.jobhistory.max-age-ms/name value604800000/value /property !-- 每天扫描一次过期日志 -- property namemapreduce.jobhistory.cleaner.interval-ms/name value86400000/value /property !-- 解决YARN容器MR依赖缺失官方必配 -- property nameyarn.app.mapreduce.am.env/name valueHADOOP_MAPRED_HOME${HADOOP_HOME}/value /property property namemapreduce.map.env/name valueHADOOP_MAPRED_HOME${HADOOP_HOME}/value /property property namemapreduce.reduce.env/name valueHADOOP_MAPRED_HOME${HADOOP_HOME}/value /property /configuration #2-创建hadoop历史日志 HDFS 目录【格式化 HDFS 后执行】 #注意如下路径必须是 HDFS 路径不能是本地磁盘路径 hdfs dfs -mkdir -p /history/done /history/done_intermediate hdfs dfs -chmod 777 /history2.3.4、配置【yarn-site.xml】#1-编辑/etc/hadoop/yarn-site.xml文件完整内容如下 ?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration !-- 开启NM辅助Shuffle服务MR必须依赖 -- property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property !-- 指定Shuffle服务处理类 -- property nameyarn.nodemanager.aux-services.mapreduce_shuffle.class/name valueorg.apache.hadoop.mapred.ShuffleHandler/value /property !-- ResourceManager所在主机 -- property nameyarn.resourcemanager.hostname/name valuehadoop01/value /property !-- 开启YARN日志聚合 -- property nameyarn.log-aggregation-enable/name valuetrue/value /property !-- 聚合日志7天后自动删除,单位秒 -- property nameyarn.log-aggregation.retain-seconds/name value604800/value /property !-- 日志页面跳转HistoryServer地址 -- property nameyarn.log.server.url/name valuehttp://hadoop01:19888/jobhistory/logs/value /property !-- NodeManager总可用内存 -- property nameyarn.nodemanager.resource.memory-mb/name value4096/value /property !-- 容器最小分配内存 -- property nameyarn.scheduler.minimum-allocation-mb/name value512/value /property !-- 容器最大分配内存官方强制配套 -- property nameyarn.scheduler.maximum-allocation-mb/name value4096/value /property !-- CPU虚拟核心资源配置 -- property nameyarn.nodemanager.resource.cpu-vcores/name value4/value /property property nameyarn.scheduler.minimum-allocation-vcores/name value1/value /property property nameyarn.scheduler.maximum-allocation-vcores/name value4/value /property !-- 使用容量调度器Hadoop3默认 -- property nameyarn.resourcemanager.scheduler.class/name valueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler/value /property !-- 磁盘健康检查避免磁盘爆满集群故障 -- property nameyarn.nodemanager.disk-health-checker.min-healthy-disks/name value1/value /property property nameyarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage/name value90/value /property /configuration2.3.5、配置【hadoop-env.sh】#1-编辑/etc/hadoop/hadoop-env.sh文件文件末尾新增内容如下 # 1. 强制指定JDK根据你实际使用的JDK export JAVA_HOME/data/openjdk # JDK路径容错校验官方模板标准逻辑 if [ ! -d ${JAVA_HOME} ]; then echo ERROR: JAVA_HOME path ${JAVA_HOME} not exists, Hadoop startup aborted! exit 1 fi # 2. 守护进程运行用户配置【官方生产环境禁止使用root仅测试临时使用】 # 生产环境请新建普通hadoop用户并修改所有值为 hadoop export HDFS_NAMENODE_USERhadoop export HDFS_DATANODE_USERhadoop export HDFS_SECONDARYNAMENODE_USERhadoop export YARN_RESOURCEMANAGER_USERhadoop export YARN_NODEMANAGER_USERhadoop export MAPRED_HISTORYSERVER_USERhadoop # 生产强制拦截root启动Hadoop官方安全规范补充 if [ $(id -u) -eq 0 ]; then echo ERROR: Root user is forbidden to run Hadoop daemons, please switch to hadoop user! exit 1 fi # 3. 自定义持久化日志、PID目录避免/tmp清理丢失【在启动hadoop前必须先创建这两个目录】 export HADOOP_LOG_DIR/data/hadoop/data/logs export HADOOP_PID_DIR/data/hadoop/data/pids # 4. 强制使用IPv4关闭IPv6优选解决主机名连通异常官方推荐写入公共OPTS避免覆盖全局参数 # 使用HADOOP_COMMON_OPTS追加参数不会覆盖系统默认JVM配置官方推荐写法 export HADOOP_COMMON_OPTS-Djava.net.preferIPv4Stacktrue ${HADOOP_COMMON_OPTS} # 5. SSH无交互启动优化【BatchModeyes 会关闭交互式密码输入必须提前配置免密 SSH否则 start-all.sh 批量启动失败属于运维前置条件非配置 bug。】 export HADOOP_SSH_OPTS-o BatchModeyes -o StrictHostKeyCheckingno -o ConnectTimeout10s #注意如果当前系统的ssh端口号不是默认的22端口则需要添加对应的ssh端口号配置如我在Hadoop主机上配置了ssh的端口是22222 #export HADOOP_SSH_OPTS-p 22222 -o BatchModeyes -o StrictHostKeyCheckingno -o ConnectTimeout10s # 6. 【可选属于优化选项】各进程JVM堆内存配置适配4G虚拟机 export HDFS_NAMENODE_OPTS-Xmx1024m -Xms512m -Dhadoop.security.loggerINFO,RFAS export HDFS_SECONDARYNAMENODE_OPTS-Xmx512m -Xms256m -Dhadoop.security.loggerINFO,RFAS export HDFS_DATANODE_OPTS-Xmx512m -Xms256m -Dhadoop.security.loggerERROR,RFAS export YARN_RESOURCEMANAGER_OPTS-Xmx1024m -Xms512m export YARN_NODEMANAGER_OPTS-Xmx512m -Xms256m export MAPRED_HISTORYSERVER_OPTS-Xmx512m -Xms256m #2-创建日志与临时内容目录 mkdir -p /data/hadoop/data/logs mkdir -p /data/hadoop/data/pids chown -R hadoop:hadoop /data/hadoop2.3.6、启动Hadoop#一、启动namenode服务 #1-切换到hadoop用户 su - hadoop #2-格式化 HDFS仅首次部署执行重复格式化会丢失数据 hdfs namenode -format #3-格式化HDFS完成后就可以启动namenode服务了 hdfs --daemon start namenode #4-检查hadoop的namenode服务是否启动正常 #4.1-查看到所有的hadoop进程信息 jps #4.2-查看指定的Namenode进程信息 ps -ef | grep NameNode #4.3-查看namenode启动日志是否有错误内容 tail -f /data/hadoop/data/logs/hadoop-hadoop-namenode-hadoop01.log #4.4-在浏览器输入当前hadoop所在服务器IP:9870【能够显示界面且显示Overview hadoop01:9000 (active)则namenode管理服务启动成功了】 ip a systemctl stop firewalld.service systemctl disable firewalld #二、启动datanode服务 hdfs --daemon start datanode jps ps -ef | grep DataNode tail -f /data/hadoop/data/logs/hadoop-hadoop-datanode-hadoop01.log #在浏览器输入当前hadoop所在服务器IP:9870【能够显示界面且Summary下面的表格容量有数据了则datanode服务启动成功了】 #三、创建hadoop历史日志 HDFS 目录【仅首次部署执行格式化 HDFS 完成且Namenode与Datanode启动后执行】 #注意如下路径必须是 HDFS 路径不能是本地磁盘路径 hdfs dfs -mkdir -p /history/done /history/done_intermediate # 所有者读写执行同组可读进入其他用户无访问权限 hdfs dfs -chmod 750 /history hdfs dfs -chown yarn:hadoop /history #四、启动resourcemanager服务【resourcemanager是yarn框架的服务用于任务调度和分配】 yarn --daemon start resourcemanager jps ps -ef | grep ResourceManager tail -f /data/hadoop/data/logs/hadoop-hadoop-resourcemanager-hadoop01.log #在浏览器输入当前hadoop所在服务器IP:8088【能够显示界面则resourcemanager服务启动成功了】 #五、启动nodemanager服务【nodemanager是计算节点主要用于分布式运算】 yarn --daemon start nodemanager jps ps -ef | grep NodeManager tail -f /data/hadoop/data/logs/hadoop-hadoop-nodemanager-hadoop01.log #在浏览器输入当前hadoop所在服务器IP:8088【能够显示界面且Cluster Nodes Metrics表格的Active Nodes下有数字1点击这个数字1就可以看到该节点的配置情况信息则nodemanager服务启动成功了】 #到这里表示Hadoop的伪分布式安装部署完成了到这里恭喜你Hadoop的伪分布式安装部署完成了三、Hadoop的基础操作测试3.1、Hadoop的分布式存储操作测试#使用hadoop hdfs命令进行分布式存储操作测试 #1-先切换到hadoop用户下 su - hadoop #2-创建文件并上传到hadoop的hdfs中的根目录下并查看 echo this is a hadoop hdfs storage testhadoop-hdfs.txt hadoop fs -put hadoop-hdfs.txt / hadoop fs -ls / #3-给hadoop的hdfs存储创建目录、文件 hadoop fs -mkdir /testdata hadoop fs -ls / hadoop fs -touch /testdata/info.txt hadoop fs -ls / #4-在hadoop的文件进行操作与查看 echo 追加内容到文件中 | hadoop fs -appendToFile - /hadoop-hdfs.txt hadoop fs -cat /hadoop-hdfs.txt echo 直接覆盖文件原有内容 | hadoop fs -put -f - /hadoop-hdfs.txt hadoop fs -cat /hadoop-hdfs.txt3.2、Hadoop的分布式计算测试#hadoop的分布式计算测试 #hadoop安装包中附带了一个mapreduce的demo程序可以用来做简单的mr计算 #1-在/data/hadoop/current/share/hadoop/mapreduce路径下找到hadoop-mapreduce-examples-3.5.0.jar包我们执行一个wordcount程序统计一批文件中相同文件的行数。 #注意/outwordcount是输出文件夹必须不存在它由程序自动创建如果预先存在outwordcount文件夹则会报错。 hadoop jar /data/hadoop/current/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.5.0.jar wordcount / /outwordcount hadoop jar /data/hadoop/current/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.5.0.jar pi 20 1000000

相关新闻