Hadoop_day04

参数设置的优先级:

1.默认配置文件

core-default.xml

hdfs-default.xml

mapred-default.xml

yarn-default.xml

2.生产配置文件

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

3.代码里面设置的参数

Configuration

优先级排序:代码里面设置的参数 > 生产配置文件 > 默认配置文件

  1. 使用java api 操作 hdfs在 创建文件夹

 /data/dt=20221114
 /data/dt=20221115
 /data/dt=20221116

2.使用java api 上传本地 wc.data 到上面三个目录下

3.使用java api 将

/data/dt=20221114/wc.data

/data/dt=20221115/wc.data

/data/dt=20221116/wc.data

目录下的文件移动到 指定目录 并进行改名字

/data/hive/20221114-01.data
/data/hive/20221115-01.data
/data/hive/20221116-01.data

path:

hdfspath 上传的path

localpath 本地path

filename 文件名字

renamepath 修改文件的路径的path

renamesufname 修改后文件的结尾

hadoop jar /home/hadoop/project/DL2262-hdfsapi-1.0.jar \
com.bigdata.HomeWork01 \
"/data/dt=" "file:home/hadoop" "1.log" "/data/flink" "-01.data" "20221117"

start.sh

if [ $# -lt 6 ];then 
    echo "Usage:put file to hdfs"
    echo "Usage:$0 <hdfspath> <localpath> <filename> <renamepath> <suffname> <dt>"
    echo "Usage:<hdfspath> is hdfs path"
    echo "eg:$0 '/data/dt=' 'file:home/hadoop' '1.log' '/data/flink' '-01.data' '20221117'"
    exit;
fi
hadoop jar /home/hadoop/project/DL2262-hdfsapi-1.0.jar \
com.bigdata.HomeWork01 \
"${1}" "${2}" "${3}" "${4}" "${5}" "${6}"

HDFS:负责存储数据

1.文件进行拆分 文件块

2.存储 拆分 文件块

补充:

hdfs主要存储文件 大文件 不是说 不能存储小文件

存储小文件 影响hdfs 性能

【block 块】(重要)

1.怎么来的

文件拆分来的 【按照 块大小 进行拆分】

2.属性:

1.块大小 128M blocksize

2.块的副本数:

本地文件大小:260M

块大小 :128m

块实际存储 规格(块大小) 128M

[hadoop@bigdata32 subdir0]$ pwd
/home/hadoop/data/hadoop/dfs/data/current/BP-155707757-192.168.41.32-1668441906801/current/finalized/subdir0/subdir0

hdfs 存储一堆文件 让你统计每个单词出现的次数?

1.input

hdfs 一些文件

fs.open

2.处理

词频统计

1.读取进来的内容 一行一行的 ,按照某个规则指定分隔符 进行拆分 =》一个一个单词

2.给每个单词 赋值为1

a,a,a,b,b =>(a,1)(a,1)(a,1)(b,1)(b,1)

3.将相同的单词 存起来 一个集合里面

进行聚合统计 每个单词出现的次数

<a,1,1,1><b,1,1>=><a,3><b,2>

3.output

1.打印到控制台

2.输出到hdfs上

【HDFS架构设计】(重要)

角色:

namenode 名称节点 nn

1.文件名称

2.文件的目录结构

3.文件的属性、权限、创建时间 副本数据=》 metadata 【元数据:描述数据的数据】

4. blockmap 块映射

是通过集群启动和运行时 dn定期发送 blockreprot 给nn 来进行动态的维护这种映射关系 mem

一个文件 被切分 多个数据块 副本数 =》数据节点

数据块对应分布在哪些节点上进行存储

作用:

管理文件系统的命名空间 其实就是维护文件系统树的文件和文件夹

是以两种文件 永久的保存在本地磁盘

镜像文件 fsimage

编辑日志文件 editlogs

edits_0000000000000000202-0000000000000000216
edits_inprogress_0000000000000000217
fsimage_0000000000000000201

secondery namenode 第二名称节点 snn:

1.fsimage+编辑日志文件 定期拿过来 进行合并 备份 推送给 老大

nn:

-rw-rw-r--. 1 hadoop hadoop      42 Nov 16 22:42 edits_0000000000000000200-0000000000000000201
-rw-rw-r--. 1 hadoop hadoop    1144 Nov 16 23:42 edits_0000000000000000202-0000000000000000216
-rw-rw-r--. 1 hadoop hadoop 1048576 Nov 16 23:42 edits_inprogress_0000000000000000217
-rw-rw-r--. 1 hadoop hadoop    2716 Nov 16 22:42 fsimage_0000000000000000201
fsimage_0000000000000000216

snn:

-rw-rw-r--. 1 hadoop hadoop      42 Nov 16 22:42 edits_0000000000000000200-0000000000000000201
-rw-rw-r--. 1 hadoop hadoop    1144 Nov 16 23:42 edits_0000000000000000202-0000000000000000216
-rw-rw-r--. 1 hadoop hadoop    2716 Nov 16 22:42 fsimage_0000000000000000201
fsimage_0000000000000000216

拉取过来+合并

edits_inprogress_0000000000000000217 +fsimage_0000000000000000216 =》fsimage_0000000000000000217

推送给

fsimage_0000000000000000217 nn

datanode 数据节点 dn存储数据块和数据块的校验

作用:

1.每个3s发送一次心跳 给nn 告诉你的 我还活着

dfs.heartbeat.interval 3s

2.每隔一定时间发送一次 blockreport

dfs.blockreport.intervalMsec 21600000ms 6h

dfs.datanode.directoryscan.interval 21600s 6h

目的: 生产上 可能会发生 文件块 丢失/损坏

hdfs架构设计: 面试会问【理解】

1.hdfs :

HDFS has a master/slave architecture.【主从架构】

master: a single NameNode

slave:DataNodes

补充:

生产上 两个NameNode =》 hdfs ha =》 high a

2. NameNode:

1.manages the file system namespace [管理 hdfs 文件系统的命名空间]

hdfs 文件的元数据:

1.文件的名称、权限、副本

2.文件路径、文件的块信息

2.regulates access to files by clients【对外提供服务】

3.the mapping of blocks to DataNodes【负责 映射块文件】

3.DataNode:

1.one per node in the cluster【每个节点有这个进程】

2.these blocks are stored in a set of DataNodes【负责存储数据块】

3.The DataNodes are responsible for serving read and write requests from the file system’s clients.【负责文件的读写】

a file is split into one or more blocks

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark 基础环境是指安装和配置 Spark 所需的软件和硬件环境。Spark 运行需要 Java 环境和 Hadoop 环境,同时也需要配置 Spark 的相关参数,如内存大小、CPU 核数等。在安装和配置好基础环境后,我们才能使用 Spark 进行数据处理和分析。 ### 回答2: Spark是一个快速、可扩展且容错的大数据处理框架,提供了丰富的API和工具,可以处理大规模的数据集。 搭建Spark基础环境包括以下几个步骤: 1. 安装Java:Spark是基于Java开发的,因此首先需要安装Java开发环境。可以从Oracle官网下载并安装适合操作系统的Java版本。 2. 下载Spark:在Apache Spark官网下载最新版本的Spark压缩包,并解压到指定目录。 3. 配置环境变量:将Spark的bin目录添加到系统的环境变量中。这样可以方便地在任意位置运行Spark的命令。 4. 配置Spark集群:如果需要在多台机器上运行Spark应用程序,需要进行集群配置。首先,在每台机器上安装好Java,并将Spark解压到相同的目录。然后,编辑Spark的配置文件,设置集群的主节点和从节点。 5. 验证安装:通过在终端运行spark-shell命令,验证Spark是否正确安装。spark-shell命令会启动一个Scala解释器,并连接到Spark集群。 6. 运行第一个Spark应用程序:编写一个简单的Spark应用程序,如WordCount,用于统计文本文件中单词的个数。将程序保存为Scala文件,并使用spark-submit命令来运行。 以上就是搭建Spark基础环境的主要步骤。搭建好Spark环境后,可以使用Spark提供的丰富API和工具来进行大数据处理和分析,如数据清洗、转换、机器学习等。Spark的功能强大且易于使用,适用于各种大规模数据处理场景。 ### 回答3: Spark是一个快速通用的集群计算系统,它提供了高效的数据处理和分析能力。要运行Spark,我们需要配置和搭建一些基础环境。 首先,我们需要安装Java JDK。Spark运行在Java虚拟机上,因此我们需要安装适当版本的Java开发工具包。通常建议使用Oracle JDK的最新稳定版本,然后设置JAVA_HOME环境变量。 其次,我们需要安装Spark本身。Spark官方网站提供了预编译的二进制发行版,我们可以从网站上下载并解压缩到我们喜欢的位置。然后,我们可以设置SPARK_HOME环境变量,以便在终端窗口中使用Spark命令。 接下来,我们需要选择一个合适的集群管理器来运行Spark应用程序,比如Standalone模式、Hadoop YARN和Apache Mesos等。我们需要根据自己的需求进行选择和配置。例如,在Standalone模式下,我们需要启动一个Spark Master和多个Spark Worker来管理和运行任务。 最后,在运行Spark应用程序之前,我们需要通过编写一个Spark应用程序来使用Spark的功能。Spark提供了Java、Scala和Python等多种编程语言的API。我们可以使用任何一种编程语言来编写应用程序并在Spark上运行。 总之,Spark基础环境搭建包括安装Java JDK、安装Spark本身、选择和配置集群管理器,以及编写Spark应用程序。搭建好这些基础环境后,我们就可以开始使用Spark进行快速、高效的集群计算了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值