Spark修炼之道(基础篇)——Linux大数据开发基础:第一节、Linux介绍、安装及使用初步

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本节主要内容Linux简史Linux系统整体介绍Ubuntu Linux安装Linux使用初步1. Linux简史要讲述大名鼎鼎的Linux,必然要先从UNIX系统谈起,下面这幅图给出了Unix系统的进化图: 图片来源:http://baike.baidu.com/link?url=QfoqWtWGs-BjpnfEy_AUk7Bm3XHuf6JbN92H

本节主要内容

  1. Linux简史
  2. Linux系统整体介绍
  3. Ubuntu Linux安装
  4. Linux使用初步

1. Linux简史

要讲述大名鼎鼎的Linux,必然要先从UNIX系统谈起,下面这幅图给出了Unix系统的进化图:
这里写图片描述
图片来源:http://baike.baidu.com/link?url=QfoqWtWGs-BjpnfEy_AUk7Bm3XHuf6JbN92HCOoUBfFfj8BuSDkbwmldtmUEmGRDUwqsQMIV4jCKHvdkSPr3Lq

从进化图中可以看到,目前所有的主流操作系统都源自Unix 6(1976),我们要讲的Linux系统只是类UNIX系统中的一种,它源自于Minix系统,由Linus Torvalds于1991年开发,那时候Linus Torvalds还是芬兰大学的一名学生,其信奉开源精神,将代码分布可互联网上,可以免费获取,自从该操作系统问世后,世界各地的程序员加入到该操作系统的维护、内核升级等工作中来,进行了大量艰辛的工作以使该操作系统能够与BSD版的Unix及System V Unix(SVR4)等商用操作系统的功能与新功能进行匹配。

Linux开源后也源生出了多种版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。常用的Linux操作系统有三种,它们分别是Redhat、 debian及Ubuntu:

  1. Ubuntu Linux。Ubuntu最大的特点在于其有着漂亮的GUI界面,包管理系统较为完善的,软件源比较丰富,技术社区资源及文档比较齐全,因此Ubuntu有着漂亮的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,良好的硬件兼容性,它有两种版本,分别是Desktop版本及Server版。Ubuntu比较适合初学者,因为Ubuntu的GUI界面的原因,它的大众化方向比较明显,当然因为GUI的原因,它非常消耗内存对机器的配置要求较高
    这里写图片描述
  2. CentOS。CentOS是生产环境使用最广泛的Linux操作系统,它是Red Hat Enterprise Linux(简称RHEL)源代码编译后的社区重新发布版,它是一个非常成熟的Linux发行版,它虽然也有图形用户界面,但不像Ubuntu那样强大。
    这里写图片描述
  3. Debian。Debian也比较适合用于服务器的操作系统,它比Ubuntu要更加稳定,它的内核比较简洁,只需要128M内存就可以流畅地运行,据说Debian可以几年不重启。Debian的技术资料、文档等相对于Ubuntu、CentOS等要少,它更适合Linux的高级用户使用。
    这里写图片描述

由于本课程针对想从事大数据开发的初学者,后期也需要在Ubuntu中配置Intellij IDEA Spark、Scala开发环境,在Linux系统上进行Spark、Scala应用程序开发,因此之故本教程决定采用Ubuntu Desktop版本进行教学。

2. Linux系统整体介绍

下图给出的是Linux操作系统分层视图:

这里写图片描述
引自:A Practical Guide to Linux Commands, Editors and Shell Programming

从上图可以看到,Linux大致可以分为四层,分别是硬件、内核、系统应用及用户软件层,分层结构具有较强的安全性,也为我们屏蔽了底层硬件的复杂性。所有的系统应用都是通过内核来与底层硬件打交道的。Linux主要有如下特点:

  • 提供内核编程接口,为用户操纵内核实现硬件资源访问提供了通道
  • 它是一种多用户的操作系统
  • 它是一种多任务的操作系统
  • 强大的文件系统
  • 提供Shell脚本
  • 丰富的系统命令

3. Ubuntu Linux安装

对于初学者,为方便Linux的学习,可以采用安装虚拟机的方式进行,目前流行的虚拟机有:

  1. Xen。Xen出身名门,起源于剑桥大学,后来被开源出来,它可以让多个虚拟机在单独一台机器上运行各自的操作系统。
  2. VMware。由VMware公司开发,功能强大,软件比较成熟,本课程采用VMWare作为虚拟机的容器
  3. KVM,基于Kernel的虚拟机,它也是一个开源的产品,只不过它运行在Linux上,作为Linux内核的一部分
  4. Virtual Box。Sun公司的大作,可以在Windows上运行。

由于后期需要在本机上搭建Spark集群,建议机器配置内存12G以上,一般集群至少三台,SparkMaster 4G,SparkSlave01 2G,SparkSlave02 2G,本机4G,这样整体机器运行起来才会比较流畅。现在Ubuntu版本已经升到了ubuntu 15.04,但它太耗内存了,出于机器性能考虑,本教程采用Ubuntu 10.04版,VMware版本是8.0.0

VMWare下载后按默认安装即可,下面讲解一下如何安装Ubuntu 10.04
1 File->New Virtual Machine
这里写图片描述

2 选择typical,然后next
这里写图片描述

3 选择Installer disc image file(ISO),选择Ubuntu 10.04 ISO文件
这里写图片描述

4 Personlize Linux,Full Name表示安装好的Linux hostname,Username,Password可以根据自己的需要做任意设置,然后下一步
这里写图片描述
5 设置虚拟机名称,然后next
这里写图片描述
6 设置磁盘容量,默认为20G,建议选择split virtual disk into multiple files,然后next
这里写图片描述
7 其它默认设置就可以,然后Finish
这里写图片描述
8 如此便完成Linux的配置,接下来便是系统安装过程,整个安装过程中无需人工干预,大约30分钟
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

4. Linux使用初步

1 命令行终端的使用
可以直接在图形用户界面上进行命令行的使用,Applications->Accessories->Terminal
这里写图片描述
这里写图片描述

也可以按Ctr+ALT+F1进入CLI(Command Line Interface)模式,
这里写图片描述
输入用户名和密码,可以得到如下界面:
这里写图片描述

切换回图形用户界面,用CTR+ALT+F8

2 超级用户root密码的设置

//采用sudo passwd命令修改root密码
xtwy@ubuntu:~$ sudo passwd
[sudo] password for xtwy: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

3 切换用户

//采用su(switch user)命令切换用户
xtwy@ubuntu:~$ su root
Password: 
root@ubuntu:/home/xtwy# 
//切换回xtwy
root@ubuntu:/home/xtwy# su xtwy
xtwy@ubuntu:~$ 

4 当前用户工作目录与根目录

//~表示用户当前工作目录
xtwy@ubuntu:~$ 
//可以用pwd(Print Working Directory)命令查看完整路径
xtwy@ubuntu:~$ pwd
/home/xtwy
//用cd(change directory)命令改变工作目录,例如切换到根目录
//在linux中,/表示根目录
xtwy@ubuntu:~$ cd /
xtwy@ubuntu:/$ 
//切换回当前用户的工作目录,可以用cd ~命令(~表示当前用户默认的工作目录)
xtwy@ubuntu:/$ cd ~
xtwy@ubuntu:~$ 

5 列出文件目录 ls命令的使用

//不加任何参数的ls命令,简易列出目录中的所有文件和目录
xtwy@ubuntu:~$ ls
Desktop    Downloads         Music     Public     Videos
Documents  examples.desktop  Pictures  Templates
//ls -a 列出目录下的所有文件包括隐含文件
xtwy@ubuntu:~$ ls -a
.             Downloads         .gvfs          .pulse-cookie
..            .esd_auth         .ICEauthority  .recently-used.xbel
.bash_logout  examples.desktop  .local         .ssh
.bashrc       .gconf            Music          .sudo_as_admin_successful
.cache        .gconfd           .nautilus      Templates
.config       .gnome2           Pictures       .update-notifier
.dbus         .gnome2_private   .profile       Videos
Desktop       .gnupg            Public         .xsession-errors
Documents     .gtk-bookmarks    .pulse         .xsession-errors.old

//列出目录下所有文件和目录的详细信息
xtwy@ubuntu:~$ ls -al
total 136
drwxr-xr-x 24 xtwy xtwy 4096 2015-08-20 23:58 .
drwxr-xr-x  3 root root 4096 2015-08-20 21:53 ..
-rw-r--r--  1 xtwy xtwy  220 2015-08-20 21:53 .bash_logout
-rw-r--r--  1 xtwy xtwy 3103 2015-08-20 21:53 .bashrc
drwx------  4 xtwy xtwy 4096 2015-08-20 23:48 .cache
drwxr-xr-x  5 xtwy xtwy 4096 2015-08-20 23:35 .config
drwx------  3 xtwy xtwy 4096 2015-08-20 23:31 .dbus
drwxr-xr-x  2 xtwy xtwy 4096 2015-08-20 23:31 Desktop
drwxr-xr-x  2 xtwy xtwy 4096 2015-08-20 23:31 Documents
drwxr-xr-x  2 xtwy xtwy 4096 2015-08-20 23:31 Downloads
-rw-------  1 xtwy xtwy   16 2015-08-20 23:31 .esd_auth
-rw-r--r--  1 xtwy xtwy  179 2015-08-20 21:53 examples.desktop
drwx------  4 xtwy xtwy 4096 2015-08-20 23:34 .gconf
drwx------  2 xtwy xtwy 4096 2015-08-21 00:12 .gconfd
drwx------  6 xtwy xtwy 4096 2015-08-20 23:32 .gnome2
drwx------  2 xtwy xtwy 4096 2015-08-20 23:32 .gnome2_private
drwx------  2 xtwy xtwy 4096 2015-08-20 23:50 .gnupg
-rw-r--r--  1 xtwy xtwy  132 2015-08-20 23:34 .gtk-bookmarks
dr-x------  2 xtwy xtwy    0 2015-08-20 23:34 .gvfs
-rw-------  1 xtwy xtwy  636 2015-08-20 23:34 .ICEauthority
drwx------  3 xtwy xtwy 4096 2015-08-20 23:34 .local
drwxr-xr-x  2 xtwy xtwy 4096 2015-08-20 23:31 Music
drwxr-xr-x  2 xtwy xtwy 4096 2015-08-20 23:31 .nautilus
drwxr-xr-x  2 xtwy xtwy 4096 2015-08-20 23:31 Pictures
-rw-r--r--  1 xtwy xtwy  675 2015-08-20 21:53 .profile
drwxr-xr-x  2 xtwy xtwy 4096 2015-08-20 23:31 Public
drwx------  2 xtwy xtwy 4096 2015-08-20 23:32 .pulse
-rw-------  1 xtwy xtwy  256 2015-08-20 23:31 .pulse-cookie
-rw-------  1 xtwy xtwy  218 2015-08-20 23:32 .recently-used.xbel
drwx------  2 xtwy xtwy 4096 2015-08-20 23:50 .ssh
-rw-r--r--  1 xtwy xtwy    0 2015-08-20 23:58 .sudo_as_admin_successful
drwxr-xr-x  2 xtwy xtwy 4096 2015-08-20 23:31 Templates
drwx------  2 xtwy xtwy 4096 2015-08-20 23:35 .update-notifier
drwxr-xr-x  2 xtwy xtwy 4096 2015-08-20 23:31 Videos
-rw-------  1 xtwy xtwy 1681 2015-08-20 23:52 .xsession-errors
-rw-------  1 xtwy xtwy 2829 2015-08-20 23:32 .xsession-errors.old
//ls -l列出文件和目录的详细用户,不包括隐含文件和当前目录.、上级目录..
xtwy@ubuntu:~$ ls -l
total 36
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Desktop
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Documents
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Downloads
-rw-r--r-- 1 xtwy xtwy  179 2015-08-20 21:53 examples.desktop
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Music
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Pictures
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Public
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Templates
drwxr-xr-x 2 xtwy xtwy 4096 2015-08-20 23:31 Videos

这里写图片描述
这里写图片描述
这里写图片描述

上面四种是最为常用的ls命令,可以满足日常工作中的绝大部分需求,更多参数如下:

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
-c 输出文件的 i 节点的修改时间,并以此排序。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-f -U 对输出的文件不排序。
-g 无用。
-i 输出文件的 i 节点的索引信息。
-k 以 k 字节的形式表示文件的大小。
-l 列出文件的详细信息。
-m 横向输出文件名,并以“,”作分格符。
-n 用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
接字(sockets)。
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-s 在每个文件名后输出该文件的大小。
-t 以时间排序。
-u 以文件上次被访问的时间排序。
-x 按列输出,横向排序。
-A 显示除 “.”和“..”外的所有文件。
-B 不输出以 “~”结尾的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出链接文件名而不是链接到的文件。
-N 不限制文件长度。
-Q 把输出的文件名用双引号括起来。
-R 列出所有子目录下的文件。
-S 以文件大小排序。
-X 以文件的扩展名(最后一个 . 后的字符)排序。
-1 一行只输出一个文件。

在需要时去查文档即可。

添加公众微信号,可以了解更多最新Spark、Scala相关技术资讯
这里写图片描述

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
21天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何开发ODPS Spark任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
109 3
|
8天前
|
机器学习/深度学习 分布式计算 大数据
Spark 适合解决多种类型的大数据处理问题
【9月更文挑战第1天】Spark 适合解决多种类型的大数据处理问题
20 3
|
12天前
|
分布式计算 大数据 Apache
跨越界限:当.NET遇上Apache Spark,大数据世界的新篇章如何谱写?
【8月更文挑战第28天】随着信息时代的发展,大数据已成为推动企业决策、科研与技术创新的关键力量。Apache Spark凭借其卓越的分布式计算能力和多功能数据处理特性,在大数据领域占据重要地位。然而,对于.NET开发者而言,如何在Spark生态中发挥自身优势成为一个新课题。为此,微软与Apache Spark社区共同推出了.NET for Apache Spark,使开发者能用C#、F#等语言编写Spark应用,不仅保留了Spark的强大功能,还融合了.NET的强类型系统、丰富库支持及良好跨平台能力,极大地降低了学习门槛并拓展了.NET的应用范围。
28 3
|
17天前
|
分布式计算 大数据 数据处理
Apache Spark的应用与优势:解锁大数据处理的无限潜能
【8月更文挑战第23天】Apache Spark以其卓越的性能、易用性、通用性、弹性与可扩展性以及丰富的生态系统,在大数据处理领域展现出了强大的竞争力和广泛的应用前景。随着大数据技术的不断发展和普及,Spark必将成为企业实现数字化转型和业务创新的重要工具。未来,我们有理由相信,Spark将继续引领大数据处理技术的发展潮流,为企业创造更大的价值。
|
1天前
|
SQL 分布式计算 大数据
代码编码原则和规范大数据开发
此文档详细规定了SQL代码的编写规范,包括代码的清晰度,执行效率,以及注释的必要性。它强调所有SQL关键字需统一使用大写或小写,并禁止使用select *操作。此外,还规定了代码头部的信息模板,字段排列方式,INSERT, SELECT子句的格式,运算符的使用,CASE语句编写规则,查询嵌套规范,表别名定义,以及SQL注释的添加方法。这些规则有助于提升代码的可读性和可维护性。
|
1天前
|
SQL 分布式计算 大数据
大数据开发SQL代码编码原则和规范
这段SQL编码原则强调代码的功能完整性、清晰度、执行效率及可读性,通过统一关键词大小写、缩进量以及禁止使用模糊操作如select *等手段提升代码质量。此外,SQL编码规范还详细规定了代码头部信息、字段与子句排列、运算符前后间隔、CASE语句编写、查询嵌套、表别名定义以及SQL注释的具体要求,确保代码的一致性和维护性。
|
8天前
|
Java Spring API
Spring框架与GraphQL的史诗级碰撞:颠覆传统,重塑API开发的未来传奇!
【8月更文挑战第31天】《Spring框架与GraphQL:构建现代API》介绍了如何结合Spring框架与GraphQL构建高效、灵活的API。首先通过引入`spring-boot-starter-data-graphql`等依赖支持GraphQL,然后定义查询和类型,利用`@GraphQLQuery`等注解实现具体功能。Spring的依赖注入和事务管理进一步增强了GraphQL服务的能力。示例展示了从查询到突变的具体实现,证明了Spring与GraphQL结合的强大潜力,适合现代API设计与开发。
21 0
|
1月前
|
分布式计算 Hadoop 大数据
Spark 与 Hadoop 的大数据之战:一场惊心动魄的技术较量,决定数据处理的霸权归属!
【8月更文挑战第7天】无论是 Spark 的高效内存计算,还是 Hadoop 的大规模数据存储和处理能力,它们都为大数据的发展做出了重要贡献。
60 2
|
18天前
|
大数据 RDMA
神龙大数据加速引擎MRACC问题之MRACC-Spark利用eRDMA近网络优化插件来提升性能如何解决
神龙大数据加速引擎MRACC问题之MRACC-Spark利用eRDMA近网络优化插件来提升性能如何解决
26 0