kali安装spark

2017-05-11 12:47:15 u012318074 阅读数 82383

本文主要详细介绍 kali 的安装过程,以及安装完成后的基本设置,比如安装增强工具,安装中文输入法以及更新升级等操作。

实验环境

Windows:Windows 10 企业版
VMware:VMware Workstation 12 Pro
Kali:kali-linux-2016.2-amd64

软件下载
Windows 下载地址:http://msdn.itellyou.cn/
VMware 百度云链接(含 vmware key):http://pan.baidu.com/s/1c8daaU 密码:s3u2
Kali 百度云链接:http://pan.baidu.com/s/1mhB6hvU 密码:dom7

当然,所有软件建议在官网下载:
VWware 官网下载地址:https://www.vmware.com/products/workstation.html
Kali 官网下载地址:https://www.kali.org/downloads/

准备工作

下载实验环境里的软件,并且确保已经安装好 Windows (其它版本也可以)和 VMware Workstation,Windows 系统和 VMware Workstation 安装过程在此不再赘述,Windows 10 安装详细过程可以参考我之前的博客:http://blog.csdn.net/u012318074/article/details/54782984 ,VMware Workstation 安装过程与普通软件安装过程基本没有差别,自行安装即可。

步骤说明

为方便新手使用,本次演示的安装过程使用中文简体语言,这也为之后熟悉 kali 里的工具有所帮助,在基本了解 kali 后可以安装英文版本,过程类似。

安装步骤中,如果只有图片没有文字说明,则选择图片中所选项即可,如果有文字则一般文字在前,图片在后,并且选择内容以文字说明为准

安装虚拟机

打开 VMware Workstation ,选择“创建新的虚拟机”
这里写图片描述

选择“自定义”安装模式
这里写图片描述

这里写图片描述

这里写图片描述

选择“Linux”和“Bebian 8.x 64位”
这里写图片描述

填写虚拟机名称,可以根据自己情况填写,位置选择一个容量大速度快的盘符和位置,并且为 Kali 虚拟机单独建个文件夹,之后好管理。
这里写图片描述

根据自己电脑情况分配 CPU 数量,我的是 i7 处理器,选择两个核给 kali,尽量大些能保证 kali 运行顺畅
选择cpu

同样内存根据自己电脑情况分配,我的是 8G 内存,选择 2G 给 Kali。
选择内存

选择“桥接网卡”
桥接网卡

这里写图片描述

选择磁盘

“最大磁盘大小”尽量填写大些,因为实际分配空间根据实际使用情况而定,为防止之后不够用,可以设置 100G。
磁盘容量

选择磁盘文件存放位置,选择之前创建的那个虚拟机存放文件夹
磁盘文件

这里写图片描述

安装 Kali

点击刚才安装好的虚拟机,选择“编辑虚拟机设置”
这里写图片描述

选中“CD/DVD”选项,然后在右侧加载‘kali-linux-2016.2-amd64.iso’文件
这里写图片描述

点击“开启此虚拟机”进行安装 Kali
这里写图片描述

选择“Install”
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

填写主机名
这里写图片描述

配置域名,如果不确定是什么可以不填
这里写图片描述

输入root用户密码,密码要牢记,实验时可以简单些
这里写图片描述

再次输入
这里写图片描述

这里写图片描述

这里写图片描述

因为是在虚拟机中安装,选择第一个“将所有文件放在同一个分区中”即可
这里写图片描述

这里写图片描述

这里写图片描述

这里选“否”,在这里不要使用网络镜像功能,如果使用网络镜像会从国外网站下载最新版本软件,如果网络不好会很慢或下载的软件是破损的。
这里写图片描述

这一步一定要选“是”
这里写图片描述

这里写图片描述

这里写图片描述

重启后即可安装完成。

安装增强工具

依次选择“虚拟机(M)—— 安装 VMware Tools”,
加载完成后,复制 VMware Tools-10.0.10***.tar.gz (不同版本具体名字不同)到 home 目录 tools 文件夹(tools文件夹需要手动创建),
解压:tar -xzvf VMware Tools ***.tar.gzVMware Tools ***.tar.gz 根据自己文件内容要换成具体的文件名。
进入vmware-tools-distrib后执行

./wmware-install.pl

如果第一次询问是否安装,输入yes,之后一路回车即可,
看到Enjoy,--the WMware team即表示安装完成
重启后选择“进入全屏模式”,能进入全屏模式说明增强工具已经安装成功。

安装中文输入法

下载搜狗输入法linux版:http://pinyin.sogou.com/linux/?r=pinyin
选择 64 位版本
这里写图片描述

在弹出的对话框中选择“Save File”
这里写图片描述

查看下载文件
这里写图片描述
确认下载完成后进入安装环节。

输入法需要用到 fcitx,所以需要先安装

apt-get install fcitx fcitx-config-gtk2

进入到“下载”目录中(可以使用复制粘贴),执行

dpkg -i sogoupinyin_2.1.0.0082_amd64.deb

如果出现报依赖问题,根据提示输入

apt-get install -f

重新执行

dpkg -i sogoupinyin_2.1.0.0082_amd64.deb

重启后,使用shift键切换中英文输入法即可。

Kali 翻墙

kali 里很多工具是需要翻墙才能使用的,而且更新时需要翻墙,所以 kali 翻墙基本是必须的。
这里使用 shadowsocks 工具,首先需要带有账号信息的 json 文件,如果是购买的付费账号,会提供类似于 hkqj1.yingsuo.wang.json的文件,将其复制到 kali 根目录,方便使用。

  • 安装 shadowsocks
apt-get install shadowsocks
  • 修改/etc/proxychains.conf
vim /etc/proxychains.conf

末尾加上socks5 127.0.0.1 1080,并注释掉socks4
这里写图片描述

  • 使用 shadowsocks

开启翻墙功能

sslocal -c ./hkqj1.yingsuo.wang.json

使用时不要关闭这个窗口,再开一个新窗口进行其它操作。

以后使用需要翻墙的工具时执行

proxychains <工具名字>

这样这个工具就会使用翻墙联网执行。

更新升级

在保证上一步设置成功后,需要更新升级时执行

proxychains apt-get update
proxychains apt-get dist-upgrade

升级过程中可能会进入一个文件,输入q即可,之后在弹出的对话框中基本选择默认即可,如果有让输入Y/N的,一般输入Y。

疑难解答

问题描述:

使用apt-get安装软件无法安装,时显示找不到安装包或类似提示

解决办法:

可以尝试下更换更新源以解决这个问题,更新源文件路径为/etc/apt/sources.list更换更新源的步骤为:
1.备份原来的文件
/etc/apt/目录下执行cp sources.list sources.list.bak
2.更换更新源
使用vim sources.list命令,将文件内的内容全部删除,然后添加上deb http://http.kali.org/kali kali-rolling main non-free contrib,不同版本的 kali 对应的更新源地址可能有所不同。
3.刷新更新列表
执行如下命令

apt-get clean
apt-get update

此时再使用apt-get安装软件应该就可以成功了。

2020-05-23 19:48:53 xgchenghai 阅读数 93

在费劲地搞定vulapps环境安装后,对安装漏洞环境貌似上瘾了,再装一个vulhub漏洞环境吧。
这次就继续在kali2009上安装,希望一切顺利。


1、简介

Vulhub是一个面向大众的开源漏洞靶场,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。安装 docker和 docker-compose后即可开始使用vulhub。

  • 项目地址:
    • https://github.com/vulhub/vulhub

在这里插入图片描述

2、安装过程

安装过程记录如下:

#需要pip
root@kali:/# apt-get install python3-pip   
root@kali:/# pip3 install docker-compose 

#下载vulhub
root@kali:/# git clone https://github.com/vulhub/vulhub.git 

下载时速度很慢,卡到最后直接挂掉了:(

正克隆到 'vulhub'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (17/17), done.
error: RPC 失败。curl 56 GnuTLS recv error (-54): 在 pull 函数中出错。
fatal: 远端意外挂断了
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败

用网上流传的修改/etc/hosts文件的方法,也没见效果,差评。

199.232.69.194 github.global.ssl.fastly.net
140.82.113.3 github.com
正克隆到 'vulhub'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (17/17), done.
接收对象中:  26% (2389/9063), 2.00 MiB | 8.00 KiB/s    

反正有的是时间,慢慢下吧,扔那几个小时没管总算下好了。

#查看vulhub漏洞靶场列表
root@kali:~# ls vulhub
activemq               electron     jackson         nginx            scrapy
appweb                 fastjson     java            node             shiro
aria2                  ffmpeg       jboss           openssh          solr
base                   flask        jenkins         openssl          spark
bash                   fpm          jira            php              spring
cgi                    ghostscript  jmeter          phpmailer        struts2
coldfusion             git          joomla          phpmyadmin       supervisor
confluence             gitea        jupyter         phpunit          thinkphp
contributors.md        gitlab       kibana          postgres         tomcat
contributors.zh-cn.md  gitlist      libssh          python           uwsgi
couchdb                glassfish    LICENSE         rails            weblogic
discuz                 goahead      liferay-portal  README.md        webmin
django                 gogs         log4j           README.zh-cn.md  wordpress
dns                    h2database   magento         redis            zabbix
docker                 hadoop       mini_httpd      rsync
drupal                 httpd        mongo-express   ruby
ecshop                 imagemagick  mysql           saltstack
elasticsearch          influxdb     nexus           samba

好多啊,有得玩了。选择一个靶场,比如进入CVE-2017-10271这个靶场

root@kali:/# cd vulhub/weblogic/CVE-2017-10271
  • 启动靶场
root@kali:~/vulhub/weblogic/CVE-2017-10271# docker-compose up -d

在这里又碰到个坑,pull到后来居然失败,提示磁盘空间不足,因为安装时默认只设置了20G,悲催,只能想办法扩容了。先在虚拟机里调整一下磁盘大小,先调成30G吧,硬盘空间本身就不多了。再打开Gparted。

root@kali:~# /bin/sh /usr/lib/udisks2/udisks2-inhibit /usr/sbin/gpartedbin
======================
libparted : 3.2
======================

将中间的swap分区关闭掉。
在这里插入图片描述
再执行下面这条命令:

root@kali:~# /usr/bin/gnome-disks

打开磁盘管理工具,删除扩展分区,然后对主分区进行容量调整,适当增加空间。
在这里插入图片描述
剩下一部分来做交换分区。

root@kali:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2): 
First sector (51175424-62914559, default 51175424): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (51175424-62914559, default 62914559): 

Created a new partition 2 of type 'Extended' and of size 5.6 GiB.

Command (m for help): t
Partition number (1,2, default 2): 
Hex code (type L to list all codes): 82

Changed type of partition 'Extended' to 'Linux swap / Solaris'.

Command (m for help): w
The partition table has been altered.
Syncing disks.

继续

root@kali:~# mkswap /dev/sda2
Setting up swapspace version 1, size = 5.6 GiB (6010433536 bytes)
no label, UUID=c1f37573-47e5-4431-91dc-518e508b4089
root@kali:~# swapon /dev/sda2

添加开机自动挂载swap分区

root@kali:~# vim /etc/fstab

#在fstab中添加下面的一条记录: /dev/sda2 swap swap defaults 0 0

挂载分区

root@kali:~# mount -a

这时swap分区就建立完成了。
在这里插入图片描述
再重新pull一次,数据包果然不小,后来30G还不够大:

root@kali:~/vulhub/weblogic/CVE-2017-10271# docker-compose up -d
Pulling weblogic (vulhub/weblogic:)...
latest: Pulling from vulhub/weblogic
6599cadaf950: Pull complete
23eda618d451: Pull complete
f0be3084efe9: Pull complete
52de432f084b: Pull complete
a3ed95caeb02: Pull complete
a2318f26c625: Pull complete
1aa642dd8cc1: Pull complete
b307208f8bf5: Pull complete
1dfbbdcc497d: Pull complete
a53e674a7606: Pull complete
5f06bb51fa3c: Pull complete
ff0ff72567f2: Downloading [======================================>            ]    830MB/1.068GB
684862046025: Download complete
abbf8d475455: Download complete
848eb11ef744: Download complete
2f3438f2b83b: Download complete
8e5871e15571: Download complete

速度还不错,一会就下好了。

Digest: sha256:275ec19477cfda389dc1c42158033e7e8c650dd4cba9f090ca0ba673902b73c9
Status: Downloaded newer image for vulhub/weblogic:latest
Creating cve-2017-10271_weblogic_1 ... done

  • 访问方式为: http://ip:7001
    看到下面这个404页面,说明weblogic已成功启动。
    在这里插入图片描述
    真的是好事多磨,学习的路上总是有各种坑,好在有强大的互联网,可以帮助解决各种问题。

  • 靶场关闭和删除

root@kali:/# docker-compose down  
root@kali:/# docker rm $(docker ps -a -p)  

----^^^----  小白一枚  不喜勿喷  -------


2018-12-01 14:21:21 lzw2016 阅读数 260

title: Spark本地安装及Linux下伪分布式搭建
date: 2018-12-01 12:34:35
tags: Spark
categories: 大数据
toc: true
个人github博客:Josonlee’s Blog


前期准备

spark可以在Linux上搭建,也能不安装hadoop直接在Windows上搭建单机版本。首先是从官网上下载和你hadoop版本匹配的spark版本(版本不要太新,选择稳定版本,如我的是hadoop2.6版本对应spark-2.0.2-bin-hadoop2.6.tgz)

可以放心的是,spark安装远比hadoop安装简单的多

本地安装

把下载的压缩包解压到本地某个位置上,修改环境变量,添加%SPARK_HOME%:解压的位置;修改Path,增加一栏%SPARK_HOME%/bin

在这里插入图片描述

好了,本地安装就这么简单。打开CMD命令行工具,输入spark-shell,如图显示就是安装成功了
在这里插入图片描述

  • Error:安装后运行是有可能会遇到一个错误:Failed to find Spark jars directory
    • 解决方法:安装路径名上不能有空格(比如Program Files就不行)

基于hadoop伪分布式搭建

将你下载的spark压缩包,通过某些工具(我用的是WinSCP)上传到虚拟机中

有必要说一下,我的是centos7系统,hadoop也是伪分布式的,主从节点名namenode(具体的你可以看我之前搭建hadoop的博客

  • 解压到用户目录下(我这里是/home/hadoop
# 上传到了/root目录下,cd到该目录下执行
tar -zxvf spark-2.0.2-bin-hadoop2.6.tgz -C /home/hadoop
  • 同本地安装一样,配置环境变量
    • 可以选择在系统环境变量中配置/etc/profile,也可以选择用户环境变量中配置/home/hadoop/.bash_profile,推荐后者
vi .bash_profile
# 添加
export SPARK_HOME=/home/hadoop/spark-2.0.2-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

# 保存退出后,source .bash_profile使配置生效

配置完成后同样可以输入spark-shell查看运行

  • 配置spark的设置文件(conf目录下)spark-env.sh和slaves

切换到spark下的conf目录下,cd /home/hadoop/spark-2.0.2-bin-hadoop2.6/conf

spark没有spark-env.sh和slaves文件,只有以template结尾的两个模板文件,依据模板文件生成即可cp spark-env.sh.template spark-env.shcp slaves.template slaves

# 修改spark-env.sh
vi spark-env.sh
# 增加类似下文内容
export JAVA_HOME=/usr/java/jdk1.8.0_131
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.12.1
export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.6.0-cdh5.12.1/etc/hadoop
export SPARK_MASTER_HOST=namenode
export SPARK_WORKER_MEMORY=1024m
export SPARK_WORKER_CORES=2
export SPARK_WORKER_INSTANCES=1

像JAVA_HOME,HADOOP_HOME是你之前java和hadoop安装的位置,可以使用echo JAVA_HOME查看

SPARK_MASTER_HOST,spark也是主从关系,这里指定spark主节点为hadoop的主节点名即可

后三行是默认配置,依你电脑配置可修改。分别代表worker内存、核、实例分配

# 修改slaves
vi slaves
# 增加从节点
namenode   #因为是伪分布式,namenode既是主也是从

还有就是要注意,你之前配置hadoop时已经完成了ip和名的映射

以上内容完成后,就搭建完了

启动spark

先完成一个事,你可以看到spark下sbin目录中启动和结束的命令是start-all.shstop-all.sh,和hadoop启动结束命令重名了,用mv命令修改为start-spark-all.sh,stop-spark-all.sh就好了

  • 启动hadoop集群 start-hdfs.shstart-yarn.sh
  • 启动spark start-spark-all.sh
  • 使用jps命令查看运行情况
  • 本地浏览器打开http://192.168.17.10:8080(这个IP是我之前在hadoop中配置的namenode的IP,端口是固定的)
    在这里插入图片描述
    在这里插入图片描述

安装过程可能遇到的问题

在配置以上设置时,一定要分清楚,这都是我的环境设置,要合理的区分开。比如说你java,hadoop安装的位置和我的不一样等等

在替别人查看这一块配置时,它运行spark集群时,遇到了几个问题

  • 用户hadoop无权限在spark下创建logs等目录
    • 通过ls -l查看spark-2.0.2-bin-hadoop2.6这个文件夹所属组和用户是root
    • 修改文件夹所属组和用户即可,chown -R hadoop:hadoop /home/hadoop/spark-2.0.2-bin-hadoop2.6
  • spark-class: line 71…No such file or directory,显示大概是找不到java
    • 这个问题就是配置写错了,spark-env.sh中java_home写错了

spark完全分布集群搭建

过程和伪分布式搭建一样,不同在于slaves中设置的从节点名为datanode1、datanode2类似的
然后,再复制到从节点主机中,如scp -r /home/hadoop/spark-2.0.2-bin-hadoop2.6 datanode1:/home/hadoop (这是因为之前配好了ssh免密登录)


版权声明:本文为博主原创文章,未经博主允许不得转载。
https://josonle.github.io
https://blog.csdn.net/lzw2016


2016-11-08 20:57:00 weixin_30551947 阅读数 20

写在前面的话

  因读研期间,实验室团队需要,所以,接触上了Kali Linux,需去获得网络安全方面的数据,即数据和信息收集。以便为后续的数据处理和分析,准备!

用到hadoop和spark、机器学习等。

   若是 VMare 11,则不会出现Debian 8,所以,我建议,来看此博文深入kali 的你,一定要安装VMare 12,直接安装,会自动去覆盖和卸载原先的VMare11。

 

 

  具体VMare的下载,见我的这篇博客

VMWare Workstation 11的安装

  下载和安装,都很简答,我这里,只附上图,

  以及,附上VMare12的序列号

5A02H-AU243-TZJ49-GTC7K-3C61N

5A02H-AU243-TZJ49-GTC7K-3C61N
1F04Z-6D111-7Z029-AV0Q4-3AEH8
GV7R8-03G44-4855Y-7PWEE-NL8DA
CV79K-8ZD0Q-0807Z-KZQGT-WG8W0
YY5M8-89W4P-489FQ-XNNNX-Q2AXA
ZF55H-ARG0N-M89QY-FZPZZ-ZKRUA
GY7EA-66D53-M859P-5FM7Z-QVH96
UC3WA-DFE01-M80DQ-AQP7G-PFKEF
CC15K-AYF01-H897Q-75Y7E-PU89A
ZA1RA-82EDM-M8E2P-YGYEZ-PC8ED
VF1N2-8DX1K-M8D0P-6FZG9-NVKZ4
UV31K-2NG90-089XP-UZP7G-YAHU2
CA5MH-6YF0K-480WQ-8YM5V-XLKV4
UZ1WH-0LF5K-M884Z-9PMXE-MYUYA
FV3TR-4RWEM-4805P-6WYEV-QF292
FV30R-DWW1H-08E6P-XDQNC-MC2RF
ZZ10H-4MGEK-489AY-74WNX-MQ2A4

 

 

 

参考视频    https://www.youtube.com/watch?v=vhx6KkL4HDM

                http://www.cnblogs.com/icez/p/3860008.html

 

 

 

 

参考

https://www.yagami.info/install/

 

 

 

 

kali-linux-2016.2-amd64.iso的下载

 

 

 

 

 

 

 

 

 

  这里,大家也可以选择桥接哈

   

 

 

  但是,大家用桥接的时候,需要注意一个地方

 

 

 

 

 

 

  当然,这里,建议,50GB以上。

 

  以下的安装步骤,参考《Kali Linux渗透测试技术详解》

 

 

 

 

 

 

 

 

 

 附安装VMare Tools 增强工具(基于Debian 8  64位)

   当然,若是VMare12,则是安装的Debian8 64位,安装增强工具是很快的。

VMware里Ubuntukylin-14.04-desktop的VMware Tools安装图文详解

 

 

 

 

 

安装Kali Linux的Vmare Tools工具(Debian 7 64位)

         因为我的是,VMare Workstation 11。没有Debian 8.x 64位。

VMare Workstation 12,才有Debian 8.x 64位(在安装增强工具时,不会出现这个问题)。

 

http://blog.csdn.net/yongh701/article/details/44876921

所以,参考了网上一些博客,还是未解决!

 

 

      debain 7.X_64系统,安装Vmare Tools时,说需要安装make、gcc、kernel headers of the running kernel。

 

之后,找同门,(他是安装的VMare Workstation 12),出现是Debain 8.x 64位。在安装增强工具时,一路直接按回车,即可,就好了。不管yes,还是no,一直按回车。

         这里,与Ubuntu 系统里安装VMare Tools工具,与Debain系统里安装VMare Tools工具的步骤,有点出入。见我的博客。

VMware里Ubuntukylin-14.04-desktop的VMware Tools安装图文详解

 

 

 

 

参考我的博客,

Ubuntu14.04安装之后的一些配置

里的安装SSH部分。

成功!

之后,安装VMare Tools增强工具,一直,按回车,即可。

这样,就避免了,

 

 

 

VMare 11 升级 12

  

  会自动将VMare 11 里的各种,卸去,安装上 VMare 12。

 

 

 

 

 

 

参考:

Kali Linux 安装教程-转

转载于:https://www.cnblogs.com/zlslch/p/6044609.html

2019-05-17 20:54:11 u012369535 阅读数 576

初始化Spark

编写一个Spark程序第一步要做的事情就是创建一个SparkContext对象,SparkContext对象告诉Spark如何连接到集群。在创建一个SparkContext对象之前,必须先创建一个SparkConf对象,SparkConf对象包含了Spark应用程序的相关信息。

每个JVM只能运行一个SparkContext,在创建另一个新的SparkContext对象前,必须将旧的对象stop()。下面语句就初始化了一个SparkContext:

val conf = new SparkConf().setAppName(appName).setMaster(master)
new SparkContext(conf)

appName参数是你Spark应用程序的名称,这个名称会显示在集群UI界面上;master参数可以是Spark,Mesos或Yarn集群的URL,还可以是代表单机模式运行的“local”字符串。在实际生产中,不建议在程序代码中指定master,而是在用spark-submit命令提交应用时才指定master,这样做的好处是不用修改代码就能将应用部署到任何一个集群模式中运行。对于本地测试或者单元测试,可通过“local”将Spark应用程序运行在本地的一个进程中。

使用Shell

当启动一个Spark shell时,Spark shell已经预先创建好一个SparkContext对象,其变量名为“sc”。如果你再新建一个SparkContext对象,那么它将不会运行下去。我们可以使用–master标记来指定以何种方式连接集群,也可以使用–jars标记添加JAR包到classpath中,多个JAR包之间以逗号分隔;还可以使用–packages标记添加Maven依赖到shell会话中,多个依赖间用逗号隔开。另外通过–repositories标记添加外部的repository。下面语句在本地模式下,使用四核运行spark-shell:

./bin/spark-shell --master local[4]

或者在启动时添加code.jar包到classpath:

./bin/spark-shell --master local[4] --jars code.jar

启动时使用Maven坐标(groupId,artifactId,version)添加依赖包:

./bin/spark-shell --master local[4] --packages "org.example:example:0.1"

对于spark-shell的其他标记,通过执行spark-shell --help获取

[root@master bin]# ./spark-shell --help
Usage: ./bin/spark-shell [options]

Options:
  --master MASTER_URL         spark://host:port, mesos://host:port, yarn, or local.
  --deploy-mode DEPLOY_MODE   Whether to launch the driver program locally ("client") or
                              on one of the worker machines inside the cluster ("cluster")
                              (Default: client).
  --class CLASS_NAME          Your application's main class (for Java / Scala apps).
  --name NAME                 A name of your application.
  --jars JARS                 Comma-separated list of local jars to include on the driver
                              and executor classpaths.
  --packages                  Comma-separated list of maven coordinates of jars to include
                              on the driver and executor classpaths. Will search the local
                              maven repo, then maven central and any additional remote
                              repositories given by --repositories. The format for the
                              coordinates should be groupId:artifactId:version.
  --exclude-packages          Comma-separated list of groupId:artifactId, to exclude while
                              resolving the dependencies provided in --packages to avoid
                              dependency conflicts.
  --repositories              Comma-separated list of additional remote repositories to
                              search for the maven coordinates given with --packages.
  --py-files PY_FILES         Comma-separated list of .zip, .egg, or .py files to place
                              on the PYTHONPATH for Python apps.
  --files FILES               Comma-separated list of files to be placed in the working
                              directory of each executor.

  --conf PROP=VALUE           Arbitrary Spark configuration property.
  --properties-file FILE      Path to a file from which to load extra properties. If not
                              specified, this will look for conf/spark-defaults.conf.

  --driver-memory MEM         Memory for driver (e.g. 1000M, 2G) (Default: 1024M).
  --driver-java-options       Extra Java options to pass to the driver.
  --driver-library-path       Extra library path entries to pass to the driver.
  --driver-class-path         Extra class path entries to pass to the driver. Note that
                              jars added with --jars are automatically included in the
                              classpath.

  --executor-memory MEM       Memory per executor (e.g. 1000M, 2G) (Default: 1G).

  --proxy-user NAME           User to impersonate when submitting the application.
                              This argument does not work with --principal / --keytab.

  --help, -h                  Show this help message and exit.
  --verbose, -v               Print additional debug output.
  --version,                  Print the version of current Spark.

 Spark standalone with cluster deploy mode only:
  --driver-cores NUM          Cores for driver (Default: 1).

 Spark standalone or Mesos with cluster deploy mode only:
  --supervise                 If given, restarts the driver on failure.
  --kill SUBMISSION_ID        If given, kills the driver specified.
  --status SUBMISSION_ID      If given, requests the status of the driver specified.

 Spark standalone and Mesos only:
  --total-executor-cores NUM  Total cores for all executors.

 Spark standalone and YARN only:
  --executor-cores NUM        Number of cores per executor. (Default: 1 in YARN mode,
                              or all available cores on the worker in standalone mode)

 YARN-only:
  --driver-cores NUM          Number of cores used by the driver, only in cluster mode
                              (Default: 1).
  --queue QUEUE_NAME          The YARN queue to submit to (Default: "default").
  --num-executors NUM         Number of executors to launch (Default: 2).
                              If dynamic allocation is enabled, the initial number of
                              executors will be at least NUM.
  --archives ARCHIVES         Comma separated list of archives to be extracted into the
                              working directory of each executor.
  --principal PRINCIPAL       Principal to be used to login to KDC, while running on
                              secure HDFS.
  --keytab KEYTAB             The full path to the file that contains the keytab for the
                              principal specified above. This keytab will be copied to
                              the node running the Application Master via the Secure
                              Distributed Cache, for renewing the login tickets and the
                              delegation tokens periodically.

启动Spark shell

Spark shell启动界面如下:

[root@master bin]# ./spark-shell --master local[2]
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel).
19/05/17 14:54:38 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
19/05/17 14:54:41 WARN spark.SparkContext: Use an existing SparkContext, some configuration may not take effect.
Spark context Web UI available at http://192.168.230.10:4040
Spark context available as 'sc' (master = local[2], app id = local-1558076081004).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.0.2
      /_/
         
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_172)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

Spark Shell Web UI

从启动报的信息可知,Spark context的Web UI入口是 http://192.168.230.10:4040,在浏览器输入入口地址后的界面如下:
在这里插入图片描述在界面的右上角可看到“Spark shell application UI”,说明启动Spark shell其实是运行一个Spark应用程序,其应用的名称叫“Spark shell”,进一步可以看到配置信息如下:
在这里插入图片描述在这里插入图片描述

Spark Shell本质

另外,我们查看一下{SPARK_HOME}/bin/saprk-shell脚本,发现脚本里有执行${SPARK_HOME}/bin/spark-submit的命令,并且–name标记的值是“spark shell”,这说明spark-shell的本质是在后台调用了spark-submit脚本来启动应用程序的,在spark-shell中已经创建了一个名为sc的SparkContext对象。执行./bin/spark-shell其实是提交运行一个名为“spark shell”的Spark Application,以交互式的命令行形式展现给用户,也相当于是Spark应用的Driver程序,执行用户输入的代码指令并展示结果。

function main() {
  if $cygwin; then
    # Workaround for issue involving JLine and Cygwin
    # (see http://sourceforge.net/p/jline/bugs/40/).
    # If you're using the Mintty terminal emulator in Cygwin, may need to set the
    # "Backspace sends ^H" setting in "Keys" section of the Mintty options
    # (see https://github.com/sbt/sbt/issues/562).
    stty -icanon min 1 -echo > /dev/null 2>&1
    export SPARK_SUBMIT_OPTS="$SPARK_SUBMIT_OPTS -Djline.terminal=unix"
    "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"
    stty icanon echo > /dev/null 2>&1
  else
    export SPARK_SUBMIT_OPTS
    "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"
  fi
}

启动spark shell后,查看本机的进程,可以看到SparkSubmit进程:

[root@master bin]# jps
2275 SparkSubmit
5007 Jps

退出Spark Shell

退出Spark Shell的正确操作是:quit,而不是我们常用的ctrl+c

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.0.2
      /_/
         
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_172)
Type in expressions to have them evaluated.
Type :help for more information.

scala> :quit
[root@master bin]# jps
8431 Jps

Spark实践笔记

阅读数 90