【Python大数据笔记_day03_shell编程和大数据导论】

news2024/11/28 17:57:19

shell编程

一、shell简介

shell语言是一个C语言编写的脚本语言,它是用户与linux的桥梁

shell编程:通常指的是学习shell命令语法后,利用这套语法开发脚本程序,操作、访问内核服务。而不是使用C语言去编写一个shell程序。

shell解释器:unix默认sh,Linux的默认的是Bash shell,bash兼容sh,针对sh编写的shell代码可以不加修改地在bash中运行。

二、shell变量

shell中有3中变量:用户变量、环境变量、特殊变量

用户变量在编程过程中使用最多

环境变量主要是在程序运行时需要设置

特殊变量在对参数判断和命令返回值判断是会使用

变量的定义语法:变量名=变量值

变量的定义需要遵循的规则

1.变量名可以有字母、数字、下划线组成,但是不能以数字开头,不能使用关键字,严格区分大小写

2.在Bush中,变量的默认类型都是字符串型,如果进行数值运算,则必须要使用特殊命令

3.变量用等号“=”连接值,“=”左右两侧不能有空格。

4.变量值中如果有空格,则需要用单引号或者双引号包含,如 test=“hello world!”

5.在变量中,可以使用转义符“\”。

1.用户变量

定义普通变量:变量名=变量值        注意:“=”左右两侧不能有空格!!!

定义只读变量:readonly 变量名=变量值        注意:只读变量生命周期在窗口关闭或脚本执行后结束

获取变量值:$变量名 或者 ${变量名}        建议使用${变量名}因为它标识变量的边界范围

删除普通变量:unset 变量名

修改普通变量值:已有变量名=新变量值

修改普通变量为只读变量:readonly 变量名

[root@cent1 test]# name = "张三"
bash: name: command not found...
[root@cent1 test]# name="张三"  
[root@cent1 test]# echo name
name
[root@cent1 test]# echo $name
张三
[root@cent1 test]# echo $name
张三
[root@cent1 test]# echo $name666

[root@cent1 test]# echo ${name}666
张三666
[root@cent1 test]# unset name
[root@cent1 test]# echo ${name}666
666
[root@cent1 test]# echo ${name}

[root@cent1 test]# readonly age=18
[root@cent1 test]# echo $age
18
[root@cent1 test]# unset age
-bash: unset: age: cannot unset: readonly variable

[root@cent1 ~]# exit
logout

Last login: Sat Mar 18 09:03:37 2023 from 192.168.88.1
[root@cent1 ~]# echo $age

2.环境变量

环境变量:值操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键信息,用以辅助系统运行。

注意:环境变量的名字习惯上用大写字母

查看系统记录的环境变量:env

常见的环境变量:HOSTNAME SHELL USER PATH...

自定义环境变量格式:export 变量名=变量值

        临时设置:直接命令形式编写        注意:窗口关闭就是失败

        永久设置:在/etc/profile文件中编写        注意:编写重新登录生效或者source /etc/profile

[root@cent1 test22]# env
HOSTNAME=cent1
SHELL=/bin/bash
USER=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@cent1 test22]# echo $SHELL
/bin/bash
[root@cent1 test22]# echo $USER
root
[root@cent1 test22]# echo $HOSTNAME
cent1
[root@cent1 test22]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@cent1 test22]# env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@cent1 ~]# export ITHEIMA=666
[root@cent1 ~]# echo $ITHEIMA

[root@cent1 ~]# vim /etc/profile
...
# 文件最后一行添加并保存
export BIGDATA=666888
[root@cent1 ~]# source /etc/profile
[root@cent1 ~]# exit
logout
login
[root@cent1 ~]# echo $BIGDATA
666888

3.特殊变量

我们可以在执行 Shell 脚本时,向脚本传递参数,这时候可以使用特殊变量来获取参数
在执行Shell程序脚本时,可以向shell脚本动态传递参数。好处是某些配置属性不用写死在脚本中。
动态传递参数的方式: sh shell脚本文件 参数1  参数2 ...
Shell常用的特殊变量在shell脚本内部支持接收参数并使用:
    $0: 获取当前脚本文件的名称
    $n: 根据数字顺序获取对应的参数    注意:n代表1,2,3,4,5...  
    $#: 获取参数的总个数
    $*: 获取所有的参数内容

三、字符串数据类型

在Bush中,变量的默认数据类型都是字符串型

定义字符串:变量名=值        变量名=‘值’        变量名=“值”

建议:使用双引号定义字符串,因为单引号括起来内容都是普通字符,双引号括起来的内容会识别特殊含义,比如:$和``

[root@cent1 ~]# name=斌子
[root@cent1 ~]# age='18'
[root@cent1 ~]# gender="男人"
[root@cent1 ~]# echo $name $age $gender
斌子 28 男人
[root@cent1 ~]# echo '我的名字是${name} 年龄是${age} 性别是${gender}'
我的名字是${name} 年龄是${age} 性别是${gender}
[root@cent1 ~]# echo "我的名字是${name} 年龄是${age} 性别是${gender}" 
我的名字是斌子 年龄是28 性别是男人
[root@cent1 ~]# echo "${name} ${age} ${gender}"
斌子 28 男人


[root@cent1 ~]# date
Sat Mar 18 11:51:16 CST 2023
[root@cent1 ~]# echo date
date
[root@cent1 ~]# echo `date`
Sat Mar 18 11:51:29 CST 2023

[root@cent1 ~]# now1=date
[root@cent1 ~]# echo $now1
date
[root@cent1 ~]# now2=`date`
[root@cent1 ~]# echo $now2
Sat Mar 18 11:52:17 CST 2023

[root@cent1 ~]# echo '现在的日期是${now2}'
现在的日期是${now2}
[root@cent1 ~]# echo '现在的日期是date'   
现在的日期是date
[root@cent1 ~]# echo '现在的日期是`date`' 
现在的日期是`date`

[root@cent1 ~]# echo "现在的日期是${now2}"
现在的日期是Sat Mar 18 11:52:17 CST 2023
[root@cent1 ~]# echo "现在的日期是`date`" 
现在的日期是Sat Mar 18 11:56:58 CST 2023

四、shell命令和shell脚本

shell命令、shell脚本:本质上都是属于shell编程;
shell命令:倾向于在linux命令行中使用,适合逻辑简单场景;
shell脚本:倾向于在脚本文件中编写,适合复杂逻辑处理。
    注意: 1.shell脚本文件一般以.sh结尾    2.文件第一行一般为#!/bin/bash

shell脚本的执行方式:
    方式一:sh在相对路径中执行            
        格式: sh 脚本
        注意: 需要进入脚本的所在工作目录,然后使用对应的sh命令来执行脚本,
        这种执行方式,脚本文件不需要具有可执行权限。

    方式二:相对路径执行        
        格式: ./脚本
        注意: 需要先进入到脚本所在的目录,然后使用 ./脚本方式执行,
        这种执行方式,必须保证脚本文件具有可执行权限。

    方式三:绝对路径执行           
        格式: /绝对路径/脚本
        注意: 需要使用脚本的绝对路径中执行,指的是直接从根目录/到脚本目录的绝对路径,
        这种执行方式,必须保证脚本文件具有可执行权限。

shell脚本也可以动态传参: sh 脚本 参数1  参数2 ...      注意: 脚本内部可以使用特殊变量获取

案列1:脚本中变量操作

创建一个binzi1,sh脚本文件,要求此脚本内定义一个字符串变量str并赋值binzi666,然后打印该字符串

最后保存并执行脚本

注意:

①shell脚本后缀名没有要求,通常以.sh结尾

在shell中除了第一行的#表示特殊格式外,其他地方的#符号一般表示注释

②#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行

③相对路径方式如果不加./直接执行脚本,默认去系统环境变量中去查找

[root@cent1 ~]# mkdir binzi
[root@cent1 ~]# cd binzi
[root@cent1 binzi]# ls
[root@cent1 binzi]# vim binzi1.sh
#!/bin/bash
str=binzi666
echo $str
# 注意保存内容                      
[root@cent1 binzi]# ls
binzi1.sh
[root@cent1 binzi]# sh binzi1.sh
binzi666

[root@cent1 binzi]# ./binzi1.sh
-bash: ./binzi1.sh: Permission denied
[root@cent1 binzi]# pwd
/root/binzi
[root@cent1 binzi]# /root/binzi/binzi1.sh
-bash: /root/binzi/binzi1.sh: Permission denied

[root@cent1 binzi]# chmod +x binzi1.sh
[root@cent1 binzi]# ls
binzi1.sh
[root@cent1 binzi]# ./binzi1.sh
binzi666
[root@cent1 binzi]# /root/binzi/binzi1.sh
binzi666

[root@cent1 binzi]# vi binzi1.sh
#!/bin/bash
#定义字符串
str=binzi666
#打印字符串
echo $str
[root@cent1 binzi]# ./binzi1.sh
binzi666

案列2:脚本中获取参数

1.编写一个脚本文件binzi2.sh,在里面使用之前学习的特殊变量分别获取当前脚本文件名称,传入参数个数并分别获取对应参数内容

2.执行binzi2.sh脚本文件,传入3个参数分别为:张三,18,男

3.使用sh命令方式执行binzi2.sh脚本文件

[root@cent1 binzi]# vi binzi2.sh
#!/bin/bash
echo "文件名称为:$0"
echo "第一个参数为:$1"
echo "第二个参数为:$2"
echo "第三个参数为:$3"
echo "参数个数为:$#"
echo "所有参数:$*"
"binzi2.sh" [New] 7L, 174C written
[root@cent1 binzi]# sh binzi2.sh
文件名称为:binzi2.sh
第一个参数为:
第二个参数为:
第三个参数为:
参数个数为:0
所有参数:
[root@cent1 binzi]# sh binzi2.sh 斌子 18 666
文件名称为:binzi2.sh
第一个参数为:斌子
第二个参数为:18
第三个参数为:666
参数个数为:3
所有参数:斌子 18 666

大数据导论

1.数据

大数据时代: 万物皆数据

数据概念: 人类的行为及产生的事件的一种记录称之为数据

数据价值: 对数据的内容进行深入分析,可以更好的帮助了解事和物在现实世界的运行规律   

2.大数据的诞生

 大数据的诞生: 跟随着互联网的发展的,当全球互联网逐步建成(2000年左右),各大企业或政府单位拥有了海量的数据亟待处理。基于这个前提逐步诞生了以分布式的形式(即多台服务器集群)完成海量数据处理的处理方式,并逐步发展成现代大数据体系。

分布式: 多台服务器互相配合协同处理同一个事情

Apache Hadoop对大数据体系的意义: 第一款获得业界普遍认可的企业级开源分布式解决方案, 一定程度上催生出了众多的大数据体系技术栈,从Hadoop开源开始(2008年左右)大数据开始蓬勃发展

3.大数据概述

什么是大数据?
狭义上: 对海量数据进行处理的软件技术体系
广义上: 数字化、信息化时代的基础支撑,以数据为生活赋能
狭义和广义联系: 学习狭义上的大数据软件技术体系,在工作中为广义上的数字化、信息化时代,添砖加瓦


大数据解决了什么问题?
问题1: 海量数据的存储
问题2: 海量数据的计算
问题3: 海量数据的传输

大数据的核心工作?
存储: 利用各类大数据技术栈,妥善保存海量待处理数据
计算: 利用各类大数据技术栈,完成海量数据的价值挖掘
传输: 利用各类大数据技术栈,协助各个环节的数据传输

4.大数据特点 

 

5.大数据技术栈 

==Apache软件基金会==(Apache Software Foundation,简称 [ASF]是专门为运作一个==开源软件==项目的 Apache 的团体提供支持的==非盈利性组织==,这个开源软件的项目就是 Apache 项目。

存储

Apache Hadoop-HDFS: HDFS是Apache Hadoop Core项目的一部分,(Hadoop Distributed File System) Hadoop分布式文件存储系统

Apache Hbase: HBase是Apache的Hadoop项目的子项目

Apache Kudu: 是由Cloudera开源的存储引擎,贡献给Apache基金组织

 计算

 Apache Hadoop-MapReduce: MapReduce组件是最早一代的大数据分布式计算引擎对大数据的发展做出了卓越的贡献

Apache Hive: Hive是一款以SQL为要开发语言的分布式计算框架。HiveSQL其底层翻译成了Hadoop的MapReduce程序去执行

Apache Spark: Spark是目前全球范围内最火热的分布式内存计算引擎。是大数据体系中的明星计算产品

Apache Flink: Flink同样也是一款明星级的大数据分布式内存计算引擎。特别是在实时计算(流计算)领域占据了大多数的国内市场。

 传输

 Apache Sqoop: Sqoop是一款ETL工具,可以协助大数据体系(hdfs,hive)和关系型数据库(mysql)之间进行数据传输。

Apache Flume: Flume是一款流式数据采集工具,可以从非常多的数据源中完成数据采集传输的任务。

Apache Kafka: Kafka是一款分布式的消息系统,可以完成海量规模的数据传输工作。Apache Kafka在大数据领域也是明星产品

Apache Pulsar: Pulsar同样是一款分布式的消息系统。

6.Hadoop

Hadoop是开源的技术框架,提供分布式存储、计算、资源调度的解决方案 

狭义上Hadoop:  包含HDFS,MapReduce,YARN三大组件的技术栈

广义上Hadoop:  整个Hadoop生态圈

Hadoop的创始人: Doug Cutting
Hadoop起源:于Apache Lucene子项目:Nutch  ,Nutch的设计目标是构建一个大型的全网搜索引擎。
Hadoop启蒙: Google三篇著名的论文(也叫三驾马车)
   《The Google file system》:谷歌分布式文件系统GFS
   《MapReduce: Simplified Data Processing on Large Clusters》:谷歌分布式计算框架MapReduce
   《Bigtable: A Distributed Storage System for Structured Data》:谷歌结构化数据存储系统


Hadoop的开源版本: Apache 开源社区版 (原生版本)

Hadoop的商业版本: Cloudera等商业公司自行二次封装的商业版

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

景联文科技提供高质量人像采集服务,助力3D虚拟人提升逼真度

人像采集是一种通过特定设备或技术,对人的相貌、身材等特征信息进行收集和处理的过程,可应用于3D虚拟人领域。通过采集大量的人像数据,可以训练和优化人像识别算法,提高其准确性。 人像采集对于提高3D虚拟人的逼真度、个性化定制以…

notepad 文本筛选并替换

正则表达式: ".*"中的"."代表的是匹配一切字符"\s" 匹配所有空白字符(包括制表符); "\S"匹配所有字符串"\d" 匹配所有数字 "\D"匹配所有非数字"*" 代表的是贪婪匹配模式意思为连续匹…

【机器学习】七、降维与度量学习

1. 维数灾难 样本的特征数称为维数(dimensionality),当维数非常大时,也就是现在所说的维数灾难。 维数灾难具体表现在:在高维情形下,数据样本将变得十分稀疏,因为此时要满足训练样本为“密采样…

Masked Image Training for Generalizable Deep Image Denoising 论文阅读笔记

CVPR2023 港科大(广州)发的一篇denoising的论文,作者里面有上海AILab的董超老师(看introduction的时候看到有一段很像董超老师 Networks are slaching off 的论文的思想,说网络overfitting的时候学习了训练集的噪声模式…

2023年【起重机司机(限门式起重机)】新版试题及起重机司机(限门式起重机)找解析

题库来源:安全生产模拟考试一点通公众号小程序 起重机司机(限门式起重机)新版试题考前必练!安全生产模拟考试一点通每个月更新起重机司机(限门式起重机)找解析题目及答案!多做几遍,其实通过起重机司机(限门式起重机)作业模拟考试…

桌面此电脑图标不见了的解决办法

打开Windows设置 找到主题(每个机型的位置可能不一样),然后点击桌面图标设置 我们也可以使用搜索框进行查找 “主题” 如果直接检索“桌面图标设置”有可能找不到 在桌面图标设置里我们可以自行勾选,选择想要在桌面进行显示的图标…

神经网络遗传算法函数极值寻优

大家好,我是带我去滑雪! 对于未知的非线性函数,仅仅通过函数的输入和输出数据难以寻找函数极值,这一类问题可以通过神经网络结合遗传算法求解,利用神经网络的非线性拟合能力和遗传算法的非线性寻优能力寻找函数极值。 …

香橙派orangepi c#.net霍尔水流量计+485脉冲精准测水流量实操实例-

香橙派 c#.net iot 霍尔水流量计传感器实操实例 用于测量液体流量,包括咖啡机,自助饮料机,农场水肥等流量检测,很便宜,十块钱以内一个 1、设备:流量计-4分水管 2、脉冲计数器 我使用的是国产香橙派 orangepi zero2 接线: 流量计香橙派红线5V黑线GND黄线wPi编码:10香…

WordPress Wpay最简单的付费查看下载wp主题模板开心无限制版

模板简介: wpay基于wppay插件二开,为了就是更简单的实现虚拟资源购买分享 本主题就是为了简单而生,idwons功能太多,许多人搭建起来站点没有用户消费,折腾大半天,不如来个简单的. 首页支持分页模式&#xff…

大学校园安全如何保障?学到了视频监控的神技!

随着科技的不断进步和社会的快速发展,视频监控技术已经成为我们生活中不可或缺的一部分。视频监控系统为我们提供了更广泛、全面的视觉信息,从而改善了安全性、管理效率和生活质量。 客户案例 零售连锁店 福建某大型零售连锁店,面临着商品损…

「Verilog学习笔记」使用函数实现数据大小端转换

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 题目要求使用函数实现4bit数据大小端转换的功能,所谓大端,即数据的高位写在左侧,低位写在右侧。小端则反过来:高位写在…

【C++高阶(一)】二叉搜索树深度剖析

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 这里写目录标题 1. 前言2. 二叉搜索树的概念以及…

阿里云服务器怎么购买价格更便宜?先领优惠券再通过阿里云活动购买最便宜

怎么购买阿里云服务器的价格是最便宜的?如果我们想购买的阿里云服务器价格更便宜的话,首先要确保自己的账号是新用户账号,其次一定要先领取阿里云送的各种优惠券,然后是在实际购买过程中尽量选择阿里云活动中的各种云服务器&#…

电机应用-舵机

目录 舵机 分类 结构 工作原理 控制原理 参数 舵机基本控制实验(MG996R舵机) MG996R舵机规格 硬件电路 TIM4配置 测试环节 舵机 分类 按照舵机的控制电路分类:模拟舵机和数字舵机。 模拟舵机和数字舵机的机械结构是完全相同的。 …

【Linux语音控制 安卓设备刷短视频 orangePi zero2 H616 (已开源) 】.md uptada:23/11/07

文章目录 H616_实现Ubuntu语音控制安卓设备刷短视频小美效果展示H616 ubuntu系统 安装adb智能公元 SU-03T 离线语音模组 固件制作配合串口实现 小美_控制安卓刷抖音 H616_实现Ubuntu语音控制安卓设备刷短视频 注意:orangePi zero2 H616 安装系统为ubuntu 小美效果…

与创新者同行,Apache Doris in 2023

在刚刚过去的 Doris Summit Asia 2023 峰会上,Apache Doris PMC 成员、飞轮科技技术副总裁衣国垒带来了“与创新者同行”的主题演讲,回顾了 Apache Doris 在过去一年所取得的技术突破与社区发展,重新思考了在面对海量数据实时分析上的挑战与机…

Docker两个容器互相请求接口

BEGIN 环境:Docker-Windows-Hyperf 1. 过以下命令查看Docker中的所有网络 docker network ls这个命令会列出所有的Docker网络,包括其ID、名称、驱动以及作用范围 在 Docker 中,容器通过 Docker 网络进行相互通信;在 Docker 中有…

面试题:说一下线程、线程锁与线程池

文章目录 前言一、线程1.线程概念2.线程与进程的关系3.定义4.wait()和sleep()5.线程的状态及其他API 二、线程锁1. 普通锁机制2. Lock 三、线程同步工具类1. CountDowmLatch闭锁:2. CyclicBarrier栅栏:3. Exchanger交换机:4. 信号量 四、线程…

C#文件上传的常用几种方式

1.第一种上传方式,基本通用于.net所有的框架 [HttpPost][Route("Common/uploadFile1")]public string uploads(){HttpContextBase context (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统contextHttpRequestBase request context.Re…

su root失败 sudo su成功进入root

目录 0.场景 1.su root输入密码kali失败 2.对kali用户暂时提权 3.问题原因 0.场景 刚刚安装好kali,想使用su root切换进入root账户 1.su root输入密码kali失败 2.对kali用户暂时提权 只要你的用户在sudoers里面,就可以输入当前用户密码暂时变成root…