桥下の民 - Hadoop
type: channel
link: https://www.wordplay.work/index.php/category/Hadoop
items: Hadoop 命令大全
items: Hadoop 生产调优
items: Yarn
items: MapReduce
items: HDFS
items: Hadoop 运行常见错误及解决
items: Hadoop 运行模式--本地/分布式
items: Hadoop 运行环境
items: Hadoop 入门

Hadoop 命令大全
type: item
date: 2022-03-12T05:50:00+00:00
description: 一、hdfs文件系统命令 1.1、文件路径增删改查系列： hdfs dfs -mkdir dir 创建文件夹 hdfs dfs -rmr dir 删除文件夹dir hdfs dfs -ls 查看目录文件信息 hdfs dfs -lsr 递归查看文件目录信息 hdfs dfs -stat path 返回指定路径的信息 1.2、空间大小查看系列命令： hdfs dfs -du -h dir 按照适合阅读的形式人性化显示文件大小 hdfs dfs -dus uri 递归显示目标文件的大小 hdfs dfs -du path/file 显示目标文件file的大小 1.3、权限管理类： hdfs dfs -chgrp group path 改变文件所属组 hdfs dfs -chgrp -R /dir 递归更改dir目录的所属组 hdfs dfs -chmod [-R] 权限 -path 改变文件的权限 hdfs dfs -chown owner[-group] /dir 改变文件的所有者 hdfs dfs -chown -R owner[-group] /dir 递归更改dir目录的所属用户 1.4、文件操作（上传下载复制）系列： hdfs dfs -touchz a.txt 创建长度为0的空文件a.txt hdfs dfs -rm file 删除文件file hdfs dfs -put file dir 向dir文件上传file文件 hdfs dfs -put filea dir/fileb 向dir上传文件filea并且把filea改名为fileb hdfs dfs -get file dir 下载file到本地文件夹 hdfs dfs -getmerge hdfs://Master:9000/data/SogouResult.txt CombinedResult 把hdfs里面的多个文件合并成一个文件，合并后文件位于本地系统 hdfs dfs -cat file 查看文件file hdfs fs -text /dir/a.txt 如果文件是文本格式，相当于cat，如果文件是压缩格式，则会先解压，再查看 hdfs fs -tail /dir/a.txt 查看dir目录下面a.txt文件的最后1000字节 hdfs dfs -copyFromLocal localsrc path 从本地复制文件 hdfs dfs -copyToLocal /hdfs/a.txt /local/a.txt 从hdfs拷贝到本地 hdfs dfs -copyFromLocal /dir/source /dir/target 把文件从原路径拷贝到目标路径 hdfs dfs -mv /path/a.txt /path/b.txt 把文件从a目录移动到b目录，可用于回收站恢复文件 1.5、判断系列： hdfs fs -test -e /dir/a.txt 判断文件是否存在，正0负1 hdfs fs -test -d /dir 判断dir是否为目录，正0负1 hdfs fs -test -z /dir/a.txt 判断文件是否为空，正0负1 1.6、系统功能管理类： hdfs dfs -expunge 清空回收站 hdfs dfsadmin -safemode enter 进入安全模式 hdfs dfsadmin -sfaemode leave 离开安全模式 hdfs dfsadmin -decommission datanodename 关闭某个datanode节点 hdfs dfsadmin -finalizeUpgrade 终结升级操作 hdfs dfsadmin -upgradeProcess status 查看升级操作状态 hdfs version 查看hdfs版本 hdfs daemonlog -getlevel host:port 打印运行在host:port的守护进程的日志级别 hdfs daemonlog -setlevel host:port 设置运行在host:port的守护进程的日志级别 hdfs dfs -setrep -w 副本数 -R path 设置文件的副本数 二、运维命令 start-dfs.sh 启动namenode，datanode，启动文件系统 stop-dfs.sh 关闭文件系统 start-yarn.sh 启动resourcemanager,nodemanager stop-yarn.sh 关闭resourcemanager,nodemanager start-all.sh 启动hdfs，yarn stop-all.sh 关闭hdfs，yarn hdfs-daemon.sh start datanode 单独启动da…

Hadoop 生产调优
type: item
date: 2022-02-25T09:39:00+00:00
description: 一、HDFS—核心参数 1.1、NameNode内存生产配置 1）NameNode 内存计算 每个文件块大概占用 150byte，一台服务器 128G 内存为例，能存储多少文件块呢？ 128 * 1024 * 1024 * 1024 / 150Byte ≈ 9.1亿 G MB KB Byte 2）Hadoop2.x系列，配置NameNode内存 NameNode 内存默认 2000m，如果服务器内存4G，NameNode内存可以配置3g。在hadoop-env.sh文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m 3）Hadoop3.x系列，配置 NameNode内存 （1）hadoop-env.sh中描述Hadoop的内存是动态分配的 # The maximum amount of heap to use (Java -Xmx). If no unit # is provided, it will be converted to MB. Daemons will # prefer any Xmx setting in their respective _OPT variable. # There is no default; the JVM will autoscale based upon machine # memory size. # export HADOOP_HEAPSIZE_MAX= # The minimum amount of heap to use (Java -Xms). If no unit # is provided, it will be converted to MB. Daemons will # prefer any Xms setting in their respective _OPT variable. # There is no default; the JVM will autoscale based upon machine # memory size. # export HADOOP_HEAPSIZE_MIN= HADOOP_NAMENODE_OPTS=-Xmx102400m （2）查看NameNode占用内存 [atguigu@hadoop102 ~]$ jps 3088 NodeManager 2611 NameNode 3271 JobHistoryServer 2744 DataNode 3579 Jps [atguigu@hadoop102 ~]$ jmap -heap 2611 Heap Configuration: MaxHeapSize = 1031798784 (984.0MB) （3）查看DataNode占用内存 [atguigu@hadoop102 ~]$ jmap -heap 2744 Heap Configuration: MaxHeapSize = 1031798784 (984.0MB) 查看发现 hadoop102 上的 NameNode 和 DataNode 占用内存都是自动分配的，且相等。不是很合理。 经验参考： https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_hardware_requirements.html#concept_fzz_dq4_gbb 具体修改：hadoop-env.sh export HDFS_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Xmx1024m" export HDFS_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS -Xmx1024m" 1.2、NameNode心跳并发配置 1）hdfs-site.xml The number of Namenode RPC server threads that listen to requests from clients. If dfs.namenode.servicerpc-address is not configured then Namenode RPC server threads listen to requests from all nodes. NameNode有一个工作线程池，用来处理不同DataNode的并发心跳以及客户端并发的元数据操作。 对于大集群或者有大量客户端的集群来说，通常需要增大该参数。默认值是10。 <property> <name>dfs.namenode.handler.count</name…

Yarn
type: item
date: 2022-02-25T09:27:00+00:00
description: 一、Yarn资源调度器 如何管理集群资源？& 如何给任务合理分配资源？ Yarn 是一个资源调度平台，负责为运算程序提供服务器运算资源，相当于一个分布式的操作系统平台，而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。 1.1、Yarn基础架构 YARN 主要由 ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。 1.2、Yarn工作机制 1、MR 程序提交到客户端所在的节点。 2、YarnRunner 向 ResourceManager 申请一个 Application。 3、RM 将该应用程序的资源路径返回给 YarnRunner。 4、该程序将运行所需资源提交到 HDFS 上。 5、程序资源提交完毕后，申请运行 mrAppMaster。 6、RM 将用户的请求初始化成一个 Task。 7、其中一个 NodeManager 领取到 Task 任务。 8、该 NodeManager 创建容器 Container，并产生 MRAppmaster。 9、Container 从 HDFS 上拷贝资源到本地。 10、MRAppmaster 向 RM 申请运行 MapTask 资源。 11、RM 将运行 MapTask 任务分配给另外两个 NodeManager，另两个 NodeManager分 别领取任务并创建容器。 12、MR 向两个接收到任务的 NodeManager 发送程序启动脚本，这两个 NodeManager分别启动 MapTask，MapTask 对数据分区排序。 13、MrAppMaster等待所有MapTask运行完毕后，向RM申请容器，运行ReduceTask。 14、ReduceTask 向 MapTask 获取相应分区的数据。 15、程序运行完毕后，MR 会向 RM 申请注销自己。 1.3、作业提交全过程 HDFS、YARN、MapReduce 三者关系。 作业提交过程之YARN 作业提交过程之HDFS & MapReduce 作业提交全过程详解 （1）作业提交 第 1 步：Client 调用 job.waitForCompletion 方法，向整个集群提交 MapReduce 作业。 第 2 步：Client 向 RM 申请一个作业 id。 第 3 步：RM 给 Client 返回该 job 资源的提交路径和作业 id。 第 4 步：Client 提交 jar 包、切片信息和配置文件到指定的资源提交路径。 第 5 步：Client 提交完资源后，向 RM 申请运行 MrAppMaster。 （2）作业初始化 第 6 步：当 RM 收到 Client 的请求后，将该 job 添加到容量调度器中。 第 7 步：某一个空闲的 NM 领取到该 Job。 第 8 步：该 NM 创建 Container，并产生 MRAppmaster。 第 9 步：下载 Client 提交的资源到本地。 （3）任务分配 第 10 步：MrAppMaster 向 RM 申请运行多个 MapTask 任务资源。 第 11 步：RM 将运行 MapTask 任务分配给另外两个 NodeManager，另两个 NodeManager分别领取任务并创建容器。 （4）任务运行 第 12 步：MR 向两个接收到任务的 NodeManager 发送程序启动脚本，这两个NodeManager 分别启动 MapTask，MapTask 对数据分区排序。 第13步：MrAppMaster等待所有MapTask运行完毕后，向RM申请容器，运行ReduceTask。 第 14 步：ReduceTask 向 MapTask 获取相应分区的数据。 第 15 步：程序运行完毕后，MR 会向 RM 申请注销自己。 （5）进度和状态更新 YARN 中的任务将其进度和状态(包括 counter)返回给应用管理器, 客户端每秒(通过mapreduce.client.progressmonitor.pollinterval设置)向应用管理器请求进度更新, 展示给用户。 （6）作业完成 除了向应用管理器请求作业进度外, 客户端每5秒都会通过调用waitForCompletion()来检查作业是否完成。时间间隔可以通过mapreduce.client.completion.pollinterval来设置。作业完成之后, 应用管理器和 Container 会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。 1.4、Yarn调度器和调度算法 目前，Hadoop作业调度器主要有三种：FIFO、容量（Capacity Scheduler）和公平（Fair Scheduler）。A…

MapReduce
type: item
date: 2022-02-25T09:14:00+00:00
description: 一、MapReduce 概述 1.1、MapReduce 定义 MapReduce 是一个分布式运算程序的编程框架，是用户开发基于Hadoop的数据分析应用的核心框架。 MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序，并发运行在一个 Hadoop 集群上。 1.2、MapReduce 优缺点 1.2.1、优点 MapReduce 易于编程 它简单的实现一些接口，就可以完成一个分布式程序，这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序，跟写一个简单的串行程序是一模一样的。就是因为这个特点使得 MapReduce 编程变得非常流行。 良好的扩展性 当计算资源不能得到满足的时候，可以通过简单的增加机器来扩展它的计算能力。 高容错性 MapReduce 设计的初衷就是使程序能够部署在廉价的PC机器上，这就要求它具有很高的容错性。比如其中一台机器挂了，它可以把上面的计算任务转移到另外一个节点上运行，不至于这个任务运行失败，而且这个过程不需要人工参与，而完全是由 Hadoop 内部完成的。 适合 PB 级以上海量数据的离线处理 可以实现上千台服务器集群并发工作，提供数据处理能力。 1.2.2、缺点 不擅长实时计算 MapReduce 无法像 MySQL 一样，在毫秒或者秒级内返回结果。 不擅长流式计算 流式计算的输入数据是动态的，而 MapReduce 的输入数据集是静态的，不能动态变化。这是因为 MapReduce 自身的设计特点决定了数据源必须是静态的。 不擅长 DAG（有向无环图）计算 多个应用程序存在依赖关系，后一个应用程序的输入为前一个的输出。在这种情况下，MapReduce 并不是不能做，而是使用后，每个 MapReduce 作业的输出结果都会写入到磁盘，会造成大量的磁盘IO，导致性能非常的低下。 1.3、MapReduce 核心思想 1、分布式的运算程序往往需要分成至少2个阶段。 2、第一个阶段的 MapTask 并发实例，完全并行运行，互不相干。 3、第二个阶段的 ReduceTask 并发实例互不相干，但是他们的数据依赖于上一个阶段的所有 MapTask 并发实例的输出。 4、MapReduce 编程模型只能包含一个 Map 阶段和一个 Reduce 阶段，如果用户的业务逻辑非常复杂，那就只能多个MapReduce 程序，串行运行。 1.4、MapReduce 进程 一个完整的 MapReduce 程序在分布式运行时有三类实例进程： MrAppMaster：负责整个程序的过程调度及状态协调。 MapTask：负责Map阶段的整个数据处理流程。 ReduceTask：负责Reduce阶段的整个数据处理流程。 1.5、官方WordCount源码 采用反编译工具反编译源码，发现 WordCount 案例有 Map 类、Reduce 类和驱动类。且数据的类型是 Hadoop 自身封装的序列化类型。 1.6、常用数据序列化类型 Java类型 Hadoop Writable类型 Boolean BooleanWritable Byte ByteWritable Int IntWritable Float FloatWritable Long LongWritable Double DoubleWritable String Text Map MapWritable Array ArrayWritable Null NullWritable 1.7、MapReduce编程规范 用户编写的程序分成三个部分：Mapper、Reducer和Driver。 1、Mapper阶段 用户自定义的 Mapper 要继承自己的父类 Mapper 的输入数据是KV对的形式（KV的类型可自定义） Mapper 中的业务逻辑写在 map() 方法中 Mapper 的输出数据是KV对的形式（KV的类型可自定义） map() 方法（MapTask进程）对每一个<K,V>调用一次 2、Reducer阶段 Reducer 的输入数据类型对应Mapper的输出数据类型，也是KV Reducer 的业务逻辑写在reduce()方法中 ReduceTask 进程对每一组相同k的<k,v>组调用一次 reduce() 方法 3、Driver阶段 相当于 YARN 集群的客户端，用于提交整个程序到 YARN 集群，提交的是封装了 MapReduce 程序相关运行参数的job对象。 1.8、WordCount 案例实操 见 MapReduceDemo。 本地运行。 1.8.2、提交到集群测试 集群上测试： （1）用 maven 打 jar 包，需要添加的打包插件依赖。 （2）将程序打成 jar …

HDFS
type: item
date: 2022-02-25T09:03:00+00:00
description: 一、HDFS概述 1.1、HDFS 产出背景及定义 1、HDFS 产生背景 随着数据量越来越大，在一个操作系统存不下所有的数据，那么就分配到更多的操作系统管理的磁盘中，但是不方便管理和维护，迫切需要一种系统来管理多台机器上的文件，这就是分布式文件管理系统。HDFS 只是分布式文件管理系统中的一种。 2、HDFS定义 HDFS（Hadoop Distributed File System），它是一个文件系统，用于存储文件，通过目录树来定位文件；其次，它是分布式的，由很多服务器联合起来实现其功能，集群中的服务器有各自的角色。 HDFS 的使用场景：适合一次写入，多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。 1.2、HDFS 优缺点 1、HDFS优点 高容错性 数据自动保存多个副本。它通过增加副本的形式，提高容错性。 某一个副本丢失以后，它可以自动恢复。 适合处理大数据 数据规模：能够处理数据规模达到GB、TB、甚至PB级别的数据。 文件规模：能够处理百万规模以上的文件数量，数量相当之大。 2、HDFS缺点 不适合低延时数据访问，比如毫秒级的存储数据，是做不到的。 无法高效的对大量小文件进行存储。 存储大量小文件的话，它会占用 NameNode 大量的内存来存储文件目录和块信息。这样是不可取的，因为 NameNode 的内存总是有限的； 小文件存储的寻址时间会超过读取时间，它违反了HDFS的设计目标。 不支持并发写入、文件随机修改。 一个文件只能有一个写，不允许多个线程同时写。 仅支持数据 append（追加），不支持文件的随机修改。 1.3、HDFS 组成架构 1.3.1、NameNode（nn） 就是 Master，它是一个主管、管理者。 管理HDFS的名称空间。 配置副本策略。 管理数据块（Block）映射信息； 处理客户端读写请求。 1.3.2、DataNode 就是Slave。NameNode 下达命令，DataNode执行实际的操作。 存储实际的数据块； 执行数据块的读/写操作。 1.3.3、Client：就是客户端。 文件切分。文件上传 HDFS 的时候，Client 将文件切分成一个一个的 Block，然后进行上传； 与 NameNode 交互，获取文件的位置信息； 与 DataNode 交互，读取或者写入数据； Client 提供一些命令来管理 HDFS，比如 NameNode 格式化； Client 可以通过一些命令来访问 HDFS，比如对 HDFS 增删查改操作； 1.3.4、Secondary NameNode 并非 NameNode 的热备。当 NameNode 挂掉的时候，它并不能马上替换 NameNode 并提供服务。 辅助 NameNode，分担其工作量，比如定期合并 Fsimage 和 Edits，并推送给 NameNode。 在紧急情况下，可辅助恢复 NameNode。 1.4、HDFS 文件块大小 HDFS 中的文件在物理上是分块存储Block，块的大小可以通过配置参数 dfs.blocksize 来规定，默认大小在Hadoop2.x/3.x 版本中是128M，1.x版本中是64M。 为什么块的大小不能设置太小，也不能设置太大？ HDFS 的块设置太小，会增加寻址时间，程序一直在找块的开始位置； 如果块设置的太大，从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时，会非常慢。 总结：HDFS 块的大小设置主要取决于磁盘传输速率。 二、HDFS 的 Shell 操作 2.1、基本语法 hadoop fs 具体命令 OR hdfs dfs 具体命令两个是完全相同的。 2.2、命令大全 bin/hadoop fs [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] <localsrc> ... <dst>] [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-count [-q] <path> ...] [-cp [-f] [-p] <src> ... <dst>] [-df [-h] [<path> ...]] [-du [-s] [-h] <path> ...] [-get [-p] [-ignoreCrc]…

Hadoop 运行常见错误及解决
type: item
date: 2022-02-25T08:48:00+00:00
description: 1）防火墙没关闭、或者没有启动YARN。 INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032 2）主机名称配置错误。 3）IP地址配置错误。 4）ssh没有配置好。 5）root用户和atguigu两个用户启动集群不统一。 6）配置文件修改不细心。 7）不识别主机名称。 java.net.UnknownHostException: hadoop102: hadoop102 at java.net.InetAddress.getLocalHost(InetAddress.java:1475) at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:146) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290) at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) 解决办法： （1）在/etc/hosts文件中添加192.168.10.102 hadoop102 （2）主机名称不要起 hadoop，hadoop000 等特殊名称 8）DataNode 和 NameNode 进程同时只能工作一个。 9）执行命令不生效，-和长–没区分开。导致命令失效。 解决办法：尽量不要粘贴Word中代码。 10）jps 发现进程已经没有，但是重新启动集群，提示进程已经开启。 原因是在Linux的根目录下/tmp目录中存在启动的进程临时文件，将集群相关进程删除掉，再重新启动集群。 11）jps 不生效。 原因：全局变量hadoop java没有生效。解决办法：需要source /etc/profile文件。 12）8088端口连接不上。 cat /etc/hosts 注释掉如下代码 #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 hadoop102

Hadoop 运行模式--本地/分布式
type: item
date: 2022-02-25T08:37:00+00:00
description: Hadoop官方网站：http://hadoop.apache.org/ Hadoop运行模式包括：本地模式、伪分布式模式以及完全分布式模式。 本地模式：单机运行，只是用来演示一下官方案例。生产环境不用。 伪分布式模式：也是单机运行，但是具备Hadoop集群的所有功能，一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试，生产环境不用。 完全分布式模式：多台服务器组成分布式环境。生产环境使用。 一、本地运行模式（官方WordCount） 创建在hadoop-3.1.3文件下面创建一个wcinput文件夹，创建一个word.txt文件 mkdir wcinput cd wcinput vim word.txt 在文件中输入如下内容 hadoop yarn hadoop mapreduce atguigu atguigu 回到Hadoop目录/opt/module/hadoop-3.1.3 执行程序 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput 查看结果 cat wcoutput/part-r-00000 看到如下结果： atguigu 2 hadoop 2 mapreduce 1 yarn 1 二、完全分布式运行模式 分析： 1、准备3台客户机（关闭防火墙、静态IP、主机名称） 2、安装 JDK 3、配置环境变量 4、安装 Hadoop 5、配置环境变量 6、配置集群 7、单点启动 8、配置 ssh 9、群起并测试集群 2.1、虚拟机准备 略 2.2、编写集群分发脚本 xsync 1、scp（secure copy）安全拷贝 scp定义：scp可以实现服务器与服务器之间的数据拷贝。（from server1 to server2） 基本语法： scp -r $pdir/$fname $user@$host:$pdir/$fname 命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称 案例实操 前提：在hadoop102、hadoop103、hadoop104都已经创建好的/opt/module、/opt/software两个目录，并且已经把这两个目录修改为atguigu:atguigu。 sudo chown atguigu:atguigu -R /opt/module （a）在hadoop102上，将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。 scp -r /opt/module/jdk1.8.0_212 atguigu@hadoop103:/opt/module （b）在hadoop103上，将hadoop102中/opt/module/hadoop-3.1.3目录拷贝到hadoop103上。 scp -r atguigu@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/ （c）在hadoop103上操作，将hadoop102中/opt/module目录下所有目录拷贝到hadoop104上。 scp -r atguigu@hadoop102:/opt/module/* atguigu@hadoop104:/opt/module 2、rsync远程同步工具 rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。 rsync 和 scp 区别：用rsync做文件的复制要比scp的速度快，rsync只对差异文件做更新。scp是把所有文件都复制过去。 基本语法： rsync -av $pdir/$fname $user@$host:$pdir/$fname 命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称 选项参数说明： -a 归档拷贝 -v 显示复制过程 案例实操： （a）删除 hadoop103 中/opt/module/hadoop-3.1.3/wcinput rm -rf wcinput/ （b）同步 hadoop102 中的 /opt/module/hadoop-3.1.3 到 hadoop103 rsync -av hadoop-3.1.3/ atguigu@hadoop103:/opt/module/hadoop-3.1.3/ 3、xsync 集群分发脚本 （1）需求：循环复制文件到所有节点的相同目录下。 （2）需求分析： （a）rsync 命令原始拷贝： rsync -av /opt/module atguigu@hadoop103:/opt/ （b）期望脚本： xsync 要同步的文件名称 （…

Hadoop 运行环境
type: item
date: 2022-02-25T08:30:00+00:00
description: 一、模板虚拟机环境准备 1）安装模板虚拟机，IP 地址 192.168.10.100、主机名称 hadoop100、内存 4G、硬盘 50G。 2）hadoop100 虚拟机配置要求如下（本文 Linux 系统全部以 CentOS-7.5-x86-1804 为例）。 （1）使用 yum 安装需要虚拟机可以正常上网，yum 安装前可以先测试下虚拟机联网情况。 （2）安装 epel-release 注：Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包，适用于 RHEL、CentOS 和 Scientific Linux。相当于是一个软件仓库，大多数 rpm 包在官方 repository 中是找不到的）。 yum install -y epel-release （3）注意：如果 Linux 安装的是最小系统版，还需要安装如下工具；如果安装的是 Linux 桌面标准版，不需要执行如下操作 net-tool：工具包集合，包含 ifconfig 等命令。 yum install -y net-tools vim：编辑器 yum install -y vim 3）关闭防火墙，关闭防火墙开机自启 systemctl stop firewalld systemctl disable firewalld.service 注意：在企业开发时，通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙。 4）创建 atguigu 用户，并修改 atguigu 用户的密码 useradd atguigu passwd 00000 5）配置 atguigu 用户具有 root 权限，方便后期加 sudo 执行 root 权限的命令 vim /etc/sudoers 修改/etc/sudoers 文件，在%wheel 这行下面添加一行，如下所示： ## Allow root to run any commands anywhere root ALL=(ALL) ALL ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL atguigu ALL=(ALL) NOPASSWD:ALL 注意：atguigu 这一行不要直接放到 root 行下面，因为所有用户都属于 wheel 组，你先 配置了 atguigu 具有免密功能，但是程序执行到 %wheel 行时，该功能又被覆盖回需要 密码。所以 atguigu 要放到 %wheel 这行下面。 6）在/opt 目录下创建文件夹，并修改所属主和所属组。 （1）在/opt 目录下创建 module、software 文件夹 mkdir /opt/module mkdir /opt/software （2）修改 module、software 文件夹的所有者和所属组均为 atguigu 用户 chown atguigu:atguigu /opt/module chown atguigu:atguigu /opt/software （3）查看 module、software 文件夹的所有者和所属组 [root@hadoop100 ~]# cd /opt/ [root@hadoop100 opt]# ll 总用量 12 drwxr-xr-x. 2 atguigu atguigu 4096 5月 28 17:18 module drwxr-xr-x. 2 root root 4096 9月 7 2017 rh drwxr-xr-x. 2 atguigu atguigu 4096 5月 28 17:18 software 7）卸载虚拟机自带的 JDK 注意：如果你的虚拟机是最小化安装不需要执行这一步。 rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps rpm -qa：查询所安装的所有rpm软件包 grep -i：忽略大小写 xargs -n1：表示每次只传递一个参数 rpm -e –nodeps：强制卸载软件 8）重启虚拟机 reboot 二、克隆虚拟机 1）利用模板机 hadoop100，克隆三台虚拟机：hadoop102 hadoop103 hadoop104。 注意：克隆时，要先关闭 hadoop100。 2）修改克隆机 IP，以下以 hadoop102 举例说明 （1）修改克隆虚拟机的静态 IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 改成 DEVICE=ens33 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static N…

Hadoop 入门
type: item
date: 2022-02-25T08:21:00+00:00
description: 1.1、简介 1）Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构。 2）主要解决，海量数据的存储和海量数据的分析计算问题。 3）广义上来说，Hadoop 通常是指一个更广泛的概念：Hadoop 生态圈。 1.2、Hadoop发展历史 1）Hadoop 创始人 Doug Cutting，为了实现与 Google 类似的全文搜索功能，他在 Lucene 框架基础上进行优化升级，查询引擎和索引引擎。 2）2001年年底 Lucene 成为 Apache 基金会的一个子项目。 3）对于海量数据的场景，Lucene 框架面对与 Google 同样的困难，存储海量数据困难，检索海量速度慢。 4）学习和模仿 Google 解决这些问题的办法 ：微型版 Nutch (Nutch 是一个开源 Java 实现的搜索引擎)。 5）可以说 Google 是 Hadoop 的思想之源（Google 在大数据方面的三篇论文） GFS --->HDFS Map-Reduce --->MR BigTable --->HBase 6）2003-2004年，Google 公开了部分 GFS 和 MapReduce 思想的细节，以此为基础 Doug Cutting 等人用了2年业余时间实现了 DFS 和 MapReduce 机制，使 Nutch 性能飙升。 7）2005 年 Hadoop 作为 Lucene的子项目 Nutch 的一部分正式引入 Apache 基金会。 8）2006 年 3 月份，Map-Reduce 和 Nutch Distributed File System （NDFS）分别被纳入到 Hadoop 项目中，Hadoop 就此正式诞生，标志着大数据时代来临。 9）名字来源于 Doug Cutting 儿子的玩具大象。 1.3、Hadoop 三大发行版本（了解） Hadoop 三大发行版本：Apache、Cloudera、Hortonworks。 Apache 版本最原始（最基础）的版本，对于入门学习最好。2006 Cloudera 内部集成了很多大数据框架，对应产品 CDH。2008 Hortonworks 文档较好，对应产品 HDP。2011 Hortonworks 现在已经被 Cloudera 公司收购，推出新的品牌 CDP。 1）Apache Hadoop 官网地址：http://hadoop.apache.org 下载地址：https://hadoop.apache.org/releases.html 2）Cloudera Hadoop 官网地址：https://www.cloudera.com/downloads/cdh 下载地址：https://docs.cloudera.com/documentation/enterprise/6/releasenotes/topics/rg_cdh_6_download.html （1）2008 年成立的 Cloudera 是最早将 Hadoop 商用的公司，为合作伙伴提供 Hadoop 的商用解决方案，主要是包括支持、咨询服务、培训。 （2）2009 年 Hadoop 的创始人 Doug Cutting 也加盟 Cloudera 公司。Cloudera 产品主要为 CDH，Cloudera Manager，Cloudera Support （3）CDH 是 Cloudera 的 Hadoop 发行版，完全开源，比 Apache Hadoop 在兼容性，安全性，稳定性上有所增强。Cloudera 的标价为每年每个节点 10000 美元。 （4）Cloudera Manager 是集群的软件分发及管理监控平台，可以在几个小时内部署好一个 Hadoop 集群，并对集群的节点及服务进行实时监控。 3）Hortonworks Hadoop 官网地址：https://hortonworks.com/products/data-center/hdp/ 下载地址：https://hortonworks.com/downloads/#data-platform （1）2011 年成立的 Hortonworks 是雅虎与硅谷风投公司 Benchmark Capital 合资组建。 （2）公司成立之初就吸纳了大约 25 名至 30 名专门研究 Hadoop 的雅虎工程师，上述工程师均在 2005 年开始协助雅虎开发 Hadoop，贡献了 Hadoop80% 的代码。 （3）Hortonworks 的主打产品是 Hortonworks Data Platform（HDP），也同样是 100%开源的产品，HDP 除常见的项目外还包括了 Ambari，一款开源的安装和管理系统。 （4）2018 年…