【Python大数据笔记_day04_Hadoop】

分布式和集群

分布式:多台服务器协同配合完成同一个大任务(每个服务器都只完成大任务拆分出来的单独1个子任务)

集群:多台服务器联合起来独立做相同的任务(多个服务器分担客户发来的请求)

注意:集群如果客户端请求量(任务量)多,多个服务器同时处理不同请求(不同任务),如果请求量少,一台服务器干活,其他服务器备份使用

Hadoop框架

概述

Hadoop简介:是Apache旗下的一个用Java语言实现的存储个计算大规模数据的软件平台.

Hadoop起源:Doug Cutting 创建的最早起源一个Nutch项目.

三驾马车:谷歌的三篇论文加速了Hadoop的研发

Hadoop框架意义:作为大数据解决方案,越来越多的企业将Hadoop技术作为进入大数据领域的必备技术.

狭义上来说:Hadoop指Apache这款开源框架,他的核心组件有:HDFS,MR,YANR

广义上来说:Hadoop通常是指一个更广泛的概念——Hadoop生态圈

Hadoop发行版本:分为开源社区版和商业版

开源社区版:指由Apache软件基金会维护的版本,是官方维护的版本体系,版本丰富,兼容性稍差

商业版:指由第三方商业公司在社区版Hadoop基础上进行了一些修改、整合以及各个组件兼容性测试而发行的版本,如cloudera的CDH等。

 版本更新

 1.x版本系列: hadoop的第二代开源版本,该版本基本已被淘汰        hadoop组成:  HDFS(存储)和MapReduce(计算和资源调度)

2.x版本系列: 架构产生重大变化,引入了Yarn平台等许多新特性       hadoop组成:  HDFS(存储)和MapReduce(计算)和YARN(资源调度)

3.x版本系列: 因为2版本的jdk1.7不更新,基于jdk1.8升级产生3版本   hadoop组成:  HDFS(存储)和MapReduce(计算)和YARN(资源调度)

 Hadoop架构解析[重点]

简单聊下hadoop架构?

当前版本hadoop组成: HDFS , MapReduce ,YARN

HDFS:(分布式文件系统),解决海量数据存储
    元数据: 描述核心数据的数据
    NameNode:集群当中的主节点,主要用于管理集群当中的各种数据
    SecondaryNameNode:主要能用于辅助NameNode进行文件块元数据存储
    DataNode:集群当中的从节点,主要用于存储真实的海量的业务数据
YARN:(作业调度和集群资源管理的框架),解决资源任务调度
    ResourceManager: 接收用户的计算请求任务,并负责集群的资源管理和分配
    NodeManager: 负责执行主节点分配的任务(给MR的计算程序提供资源)
MapReduce:(分布式运算编程框架),解决海量数据计算
    如何计算: 核心思想就是分而治之   Map负责分解,Reduce负责合并
    MR程序: 使用java/python然后去编写MR程序,成本高           如何解决?  在hive平台上编写sql,执行sql底层自动转为MR程序
    
MapReduce计算需要的数据和产生的结果需要HDFS来进行存储
MapReduce的运行需要由Yarn集群来提供资源调度。

Hadoop集群启动[练习]

启动

# 一键启动hdfs和yarn集群
[root@node1 ~]# start-all.sh# 单独启动mr计算任务历史服务
[root@node1 ~]# mapred --daemon start historyserver

页面

如果没有做一下配置,需要使用ip地址访问:

        HDFS: http://192.168.88.161:9870/

        YARN: http://192.168.88.161:8088/

        jobhistory: http://192.168.88.161:19888/

可以进入C:\Windows\System32\drivers\etc 目录打开hosts文件,添加以下内容:

192.168.88.161 node1
192.168.88.162 node2
192.168.88.163 node3

 配置完成后,可以直接通过node1访问

        HDFS: http://node1:9870/

        YARN: http://node1:8088/

        jobhistory: http://node1:19888/

官方示例

 在Hadoop的安装包中,官方提供了MapReduce程序的示例examples,以便快速上手体验MapReduce。该示例是使用java语言编写的,被打包成为了一个jar文件。

官方示例jar路径: /export/server/hadoop-3.3.0/share/hadoop/mapreduce

 圆周率练习

hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi x y

第一个参数pi:表示MapReduce程序执行圆周率计算;

第二个参数x:用于指定map阶段运行的任务次数,并发度,举例:x=10

第三个参数y:用于指定每个map任务取样的个数,举例: y=50

 

[root@node1 ~]# cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce
[root@node1 mapreduce]# hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 10 50
...
Job Finished in 29.04 seconds
Estimated value of Pi is 3.16000000000000000000

词频统计[重点]

需求:

        WordCount算是大数据统计分析领域的经典需求了,相当于编程语言的HelloWorld。统计文本数据中, 相同单词出现的总次数。用SQL的角度来理解的话,相当于根据单词进行group by分组,相同的单词 分为一组,然后每个组内进行count聚合统计。 ​ 已知hdfs中word.txt文件内容如下,计算每个单词出现的次数

步骤

 1.HDFS根目录中创建input目录,存储word.txt文件

可以在window本地提前创建word.txt文件存储,内容如下:

zhangsan lisi wangwu zhangsan
zhaoliu lisi wangwu zhaoliu
xiaohong xiaoming hanmeimei lilei
zhaoliu lilei hanmeimei lilei

 

 2.在shell命令行中执行如下命令

[root@node1 ~]# cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce
[root@node1 mapreduce]# hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input /output

 3.去HDFS中查看是否生成output目录

 注意: output输出目录,在执行第2步命令后会自动生成,如果提前手动创建或者已经存在,就会报以下错误:

org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://node1.itcast.cn:8020/output already exists

 4.进入output目录查看part-r-00000文件,结果如下:

 hanmeimei    2
lilei    3
lisi    2
wangwu    2
xiaohong    1
xiaoming    1
zhangsan    2
zhaoliu    3

Hadoop-HDFS 

特点

HDFS存储大文件,把大文件默认切割成128M大小的block块,进行存储
HDFS存储块的时候,会给每个块进行备份(一共三份)
HDFS文件系统可存储超大文件,时效性稍差。
HDFS具有硬件故障检测和自动快速恢复功能。
HDFS为数据存储提供很强的扩展能力。
HDFS存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改。
HDFS可在普通廉价的机器上运行。

架构

 

 1、Client
    发请求就是客户端。
    文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储
    与 NameNode 交互,获取文件的位置信息。
    与 DataNode 交互,读取或者写入数据。
    Client 提供一些命令来管理 和访问HDFS,比如启动或者关闭HDFS。
2、NameNode
    就是 master,它是一个主管、管理者。
    处理客户端读写请求。
    管理 HDFS 元数据(文件路径,文件的大小,文件的名字,文件权限,文件切割后的块(block)信息…)。
    配置3副本备份策略。
3、DataNode
    就是Slave。NameNode 下达命令,DataNode 执行实际的操作。
    存储实际的数据块(block)。
    执行数据块的读/写操作。
    定时向namenode汇报block信息。
4、Secondary NameNode
    并非 NameNode 的备份节点。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。
    只是辅助 NameNode,对HDFS元数据进行合并,合并后再交给NameNode。
    在紧急情况下,可辅助恢复 NameNode 部分数据。

副本

block块: HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件拆分成一系列的数据块进行存储,这个数据块被称为block,除了最后一个,所有的数据块都是同样大小的。

block 块大小默认: 128M(134217728字节)

注意: 为了容错,文件的所有block都会有副本。每个文件的数据块大小和副本系数都是可配置的。
    
副本系数默认:  3个

hdfs默认文件: https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

shell命令 

 hdfs的shell命令概念: 安装好hadoop环境之后,可以执行类似于Linux的shell命令对文件的操作,如ls、mkdir、rm等,对hdfs文件系统进行操作查看,创建,删除等。

hdfs的shell命令格式1: hadoop fs -命令 参数
hdfs的shell命令格式2: hdfs dfs -命令 参数

hdfs的家目录默认: /user/root   如果在使用命令操作的时候没有加根目录/,默认访问的是此家目录/user/root

查看目录下内容:  hdfs dfs -ls 目录的绝对路径
创建目录: hdfs dfs -mkdir 目录的绝对路径
创建文件: hdfs dfs -touch 文件的绝对路径
移动目录/文件: hdfs dfs -mv 要移动的目录或者文件的绝对路径  目标位置绝对路径
复制目录/文件: hdfs dfs -cp 要复制的目录或者文件的绝对路径  目标位置绝对路径
删除目录/文件: hdfs dfs -rm [-r] 要删除的目录或者文件的绝对路径
查看文件的内容: hdfs dfs -cat 要查看的文件的绝对路径          注意: 除了cat还有head,tail也能查看
查看hdfs其他shell命令帮助: hdfs dfs --help
注意: hdfs有相对路径,如果操作目录或者文件的时候没有以根目录/开头,就是相对路径,默认操作的是/user/root

把本地文件内容追加到hdfs指定文件中: hdfs dfs -appendToFile 本地文件路径 hdfs文件绝对路径

注意: window中使用页面可以完成window本地和hdfs的上传下载,当然linux中使用命令也可以完成文件的上传和下载
linux本地上传文件到hdfs中: hdfs dfs -put linux本地要上传的目录或者文件路径  hdfs中目标位置绝对路径
hdfs中下载文件到liunx本地: hdfs dfs -get hdfs中要下载的目录或者文件的绝对路径 linux本地目标位置路径 

Hive环境准备[重点]

shell脚本执行方式

方式1: sh 脚本          注意: 需要进入脚本所在目录,但脚本有没有执行权限不影响执行
方式2: ./脚本           注意: 需要进入脚本所在目录,且脚本必须有执行权限
方式3: /绝对路径/脚本     注意: 不需要进入脚本所在目录,但必须有执行权限
方式4: 脚本             注意: 需要配置环境变量(大白话就是把脚本所在路径共享,任意位置都能直接访问)

配置Hive环境变量

[root@node1 /]# vim /etc/profile

在profile文件末尾添加(小技巧G+o快速定位到最后) export HIVE_HOME=/export/server/apache-hive-3.1.2-bin export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/sbin

[root@node1 /]# source /etc/profile

最后建议关机拍摄下快照

 先启动hive服务

知识点:

后台启动metastore服务: nohup hive --service metastore &
后台启动hiveserver2服务: nohup hive --service hiveserver2 &
查看metastore和hiveserver2进程是否启动: jps                   注意: 服务名都叫RunJar,可以通过进程编号区分
服务启动需要一定时间可以使用lsof查看: lsof -i:10000              注意: 如果无内容继续等待,如果有内容代表启动成功

示例: 

[root@node1 bin]# nohup hive --service metastore &
[1] 13490
nohup: 忽略输入并把输出追加到"nohup.out" 
回车[root@node1 bin]# nohup hive --service hiveserver2 &
[2] 13632
nohup: 忽略输入并把输出追加到"nohup.out" 
回车[root@node1 bin]# jps
...
13490 RunJar
13632 RunJar[root@node1 bin]# 
# 注意:10000端口号一般需要等待3分钟左右才会查询到
[root@node1 bin]# lsof -i:10000
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    18804 root  520u  IPv6 266172      0t0  TCP *:ndmp (LISTEN)
# 此处代表hive启动成功,今日内容完成

再连接hive服务

知识点:

一代客户端连接命令: hive           注意: hive直接连接成功,直接可以编写sql语句

二代客户端连接命令: beeline        注意: 以后建议用二代客户端
二代客户端远程连接命令: !connect jdbc:hive2://node1:10000
注意: hive用户名是root  密码为空

一代客户端示例: 

[root@node1 /]# hive
...
hive> show databases;
OK
default
Time taken: 0.5 seconds, Fetched: 1 row(s)
hive> exit;

二代客户端示例:

[root@node1 /]# beeline# 先输入!connect jdbc:hive2://node1:10000连接
beeline> !connect jdbc:hive2://node1:10000# 再输入用户名root,密码不用输入直接回车即可
Enter username for jdbc:hive2://node1:10000: root
Enter password for jdbc:hive2://node1:10000:# 输入show databases;查看表
0: jdbc:hive2://node1:10000> show databases;
INFO  : Concurrency mode is disabled, not creating a lock manager
+----------------+
| database_name  |
+----------------+
| default        |
+----------------+
1 row selected (1.2 seconds)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/190458.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【入门Flink】- 08Flink时间语义和窗口概念

Flink-Windows 是将无限数据切割成有限的“数据块”进行处理,这就是所谓的“窗口”(Window)。 注意:Flink 中窗口并不是静态准备好的,而是动态创建——当有落在这个窗口区间范围的数据达到时,才创建对应的窗…

IDEA 关闭SpringBoot启动Logo/图标

一、环境 1、SpringBoot 2.6.4 Maven POM格式 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/></parent> 2、IDE…

OpenCV:图像噪点消除与滤波算法

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

【hcie-cloud】【3】华为云Stack规划设计之华为云Stack交付综述【上】

文章目录 前言华为云Stack交付综述交付流程华为云Stack交付流程华为云Stack安装部署流程 交付工具链华为云Stack交付工具链eDesigner - 让解决方案销售更智能eDesigner配置页面 - 基本信息eDesigner配置页面 - 服务及组网配置eDesigner配置页面 - 弹性云服务器/ECSeDesigner配置…

带头双向循环链表

文章目录 概述初始化销毁插入删除遍历打印 概述 带头双向循环链表&#xff1a;结构最复杂&#xff0c;一般用在单独存储数据。实际中使用的链表数据结构&#xff0c;都是带头双向循环链表。另外这个结构虽然结构复杂&#xff0c;但是使用代码实现以后会发现结构会带来很多优势…

11.读取文件长度-fseek和ftell函数的使用

文章目录 简介1. 写入测试文件2. 读取文件长度 简介 主要讲使用fopen读取文件&#xff0c;配合使用fseek和ftell来读取文件长度。1. 写入测试文件 执行下方程序&#xff0c;使用fwrite函数写入40字节的数据&#xff0c;使其形成文件存入本地目录。#define _CRT_SECURE_NO_WARNI…

CCF ChinaSoft 2023 论坛巡礼 | 编译技术与编译器设计论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

JVS低代码表单自定义按钮的使用说明和操作示例

在普通的表单设计中&#xff0c;虽然自带的【提交】、【重置】、【取消】按钮可以满足基本操作需求&#xff0c;但在面对更多复杂的业务场景时&#xff0c;这些按钮的显示控制就显得有些力不从心。为了更好地满足用户在表单操作过程中的个性化需求&#xff0c;JVS低代码推出了表…

接口测试--知识问答

1 做接口测试当请求参数多时tps下降明显&#xff0c;此接口根据参数从redis中获取数据&#xff0c;每个参数与redis交互一次&#xff0c;当一组参数是tps5133&#xff0c;五组参数是tps1169&#xff0c;多次交互影响了处理性能&#xff0c;请详细阐述如何改进增进效果的方案。 …

软件外包开发的需求表达方法

软件开发需求的有效表达对于项目的成功至关重要。无论选择哪种需求表达方法&#xff0c;清晰、详细、易于理解是关键。与开发团队建立良好的沟通渠道&#xff0c;确保他们对需求有充分的理解&#xff0c;并随着项目的推进及时调整和更新需求文档。以下是一些常用的需求表达方法…

Django下的Race Condition漏洞

目录 环境搭建 无锁无事务的竞争攻击复现 无锁有事务的竞争攻击复现 悲观锁进行防御 乐观锁进行防御 环境搭建 首先我们安装源码包&#xff1a;GitHub - phith0n/race-condition-playground: Playground for Race Condition attack 然后将源码包上传到Ubuntu 为了方便使…

【Linux】虚拟机连不上外网 (ping www.baidu.com不通)

进入linux系统&#xff0c;打开终端&#xff0c;ping www.baidu.com 发现ping不通 首先我连接的是nat模式 查看是否连接上自己本机的网 切换root用户 使用 ifconfig 命令查看是eth0 还是 ens33 vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTOstatic ONBOOTyes …

openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程

文章目录 openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程122.1 创建并执行涉及加密列的函数/存储过程 openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程 密态支持函数/存储过程当前版本只支持sql和P…

带有密码的Excel只读模式,如何取消?

Excel文件打开之后发现是只读模式&#xff0c;想要退出只读模式&#xff0c;但是只读模式是带有密码的&#xff0c;该如何取消带有密码的excel只读文件呢&#xff1f; 带有密码的只读模式&#xff0c;是设置了excel文件的修改权限&#xff0c;取消修改权限&#xff0c;我们需要…

2.7 CE修改器:多级指针查找

在本步骤中&#xff0c;你需要使用多级指针的概念来查找健康值真正的地址并修改它。多级指针就是一个指针的指针&#xff0c;也就是第一个指针指向第二个指针&#xff0c;第二个指针指向第三个指针&#xff0c;以此类推&#xff0c;最终指向你想要访问的地址。 首先&#xff0…

MAC在Linux上上传本地文件压缩包(tomcat)解决方法(炒鸡详细)

要将文件压缩包上传到Linux云服务器&#xff0c;并在服务器上解压打开&#xff0c;你可以使用以下步骤&#xff1a; 在本地的Mac上&#xff0c;将要上传的文件或文件夹压缩成一个压缩包&#xff08;如zip或tar.gz格式&#xff09;。 使用SSH连接到Linux云服务器。你可以使用Te…

【深度学习实验】网络优化与正则化(三):随机梯度下降的改进——Adam算法详解(Adam≈梯度方向优化Momentum+自适应学习率RMSprop)

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正&#xff1a;动量法Momen…

STM32--系统滴答SysTick

一、SysTick是什么&#xff1f; Systick定时器是一个24bit的倒计时&#xff08;向下计数&#xff09;定时器&#xff0c;功能就是实现简单的延时。 SysTick 是一种系统定时器&#xff0c;通常在嵌入式系统中使用。它是 ARM Cortex-M 处理器的一个特殊定时器&#xff0c;用于提…

基于Qt 多线程(继承自QThread篇)

# 简介 我们写的一个应用程序,应用程序跑起来后一般情况下只有一个线程,但是可能也有特殊情况。比如我们前面章节写的例程都跑起来后只有一个线程,就是程序的主线程。线程内的操作都是顺序执行的。恩,顺序执行?试着想一下,我们的程序顺序执行,假设我们的用户界面点击有某…

JavaScript_动态表格_删除功能

1、动态表格_删除功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>动态表格_添加和删除功能</title><style>table{border: 1px solid;margin: auto;width: 100%;}td,th{text-align: …