当前位置: 首页 > 编程日记 > 正文

Ubuntu搭建Spark运行环境

前言

因为之前研究的方向是分布式系统,重点放在了Hadoop分布式文件系统上。现如今,社会对机器学习的需求势如破竹。为了调整研究方向,而且不抛弃原本的研究成果,研究反向便从分布式系统转为分布式机器学习算法(刚起步,可能这种说法会不太正确)。Spark MLlib是Apache Spark的可扩展的机器学习库,并提供有Scala,Java,Python的API。Mahout 是 Apache旗下的一个开源项目,提供了一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。因此,从今往后重点将会放在Spark Mlib和Mahout上。本文着重描述Spark环境的搭建以及环境测试。

1 基本环境搭建

1.1 环境变量配置

使用vim编辑环境变量文件:/etc/profile:

1 #install vim 
2 sudo apt-get install vim
3 #edit env. profile
4 sudo vim /etc/profile

在/etc/profile文件末尾添加如下内容(为了方便以后更深入学习机器学习,以下配置文件包含protobuf,Mahout等配置。注意:各软件的安装位置需要按需修改):

 1 #Java env.
 2 export JAVA_HOME=/your_Java_home
 3 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 4 export PATH=$JAVA_HOME/bin:/usr/local/protobuf/bin:$PATH
 5 
 6 #Scala env.
 7 export SCALA_HOME=/your_Scala_home
 8 export PATH=$SCALA_HOME/bin:$PATH
 9 
10 #Spark env.
11 export SPARK_HOME=/your_Spark_home
12 export PATH=$SPARK_HOME/bin:$PATH
13 
14 #Python env.
15 export PYTHONPATH=/your_python_home
16 
17 #Hadoop env.
18 export HADOOP_HOME=/your_hadoop_home
19 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
20 export PATH=$PATH:$HADOOP_HOME/bin
21 export HADOOP_HOME_WARN_SUPPRESS=not_null
22 
23 #Mahout env.
24 export MAHOUT_HOME=/your_Mahout_home
25 export MAHOUT_CONF_DIR=$MAHOUT_HOME/conf
26 export PATH=$MAHOUT_HOME/conf:$MAHOUT_HOME/bin:$PATH

由于进行Spark基本环境测试时,使用了Hadoop文件操作功能(上传),另需部署Hadoop伪分布式环境。本文着重描述Spark环境搭建,因此不再赘述Hadoop环境搭建。

2 基本环境测试及结果

2.1 启动Hadoop

首先,进入Hadoop根目录,如图红框所示。

其次,使用如下命令启动Hadoop。(备注:注释行命令也可启动Hadoop,不过此方法已经被取代了。)

最后,通过jps查看Hadoop各个组件是否正确启动。若出现异常,请查阅相关官方文档。

1 #./sbin/start-all.sh
2 ./sbin/start-dfs.sh

2.2 启动Spark

由于环境变量配置好了,因此直接使用pyspark启动python shell模式的spark。(官方文档中提供有Scala模式的spark启动模式)

至此,命令行环境搭建已经完毕。可使用官方文档提供的案例进行测试。注意:需要提前上传测试文件到HDFS。可查阅相关的Hadoop Shell命令。

3 IDE环境搭建

3.1 Edit Configurations

红框是需要注意的地方。

重点一:需要新建一个空python文件才能进行配置。

重点二:Environment variables中的PYTHONPATH是配置Spark根目录下的python。

3.2 Project Settings

为了确保测试代码的库都完整导入,需要进行Project的Settings修改。

File->Settings->Project Structure->如图所示,将spark路径下的py4j和pyspark库添加到Add Conetent Root中。(若此步骤之后仍有报错,可能需要先使用pip install py4j。)

4 IDE环境测试及结果

 4.1 Word Count测试

重点一:sc位于pyspark.shell中。

重点二:若textFile指定HDFS上的文件,需要事先上传测试文件。(官方文档中写明,可以使用本地文件)

重点三:saveAsTextFile将结果存储到HDFS上时,不能多次存到同一个文件夹。(注意:这个名字是文件夹,结果会有三个文件,或者更多个文件?)

重点四:Process finished with exit code 0。此时才表示成功执行测试案例。

4.2 查看测试结果集

使用Hadoop Shell命令查看wc_output_02文件夹下,存在三个文件。可进一步使用cat命令查看结果。

总结

整个环境搭建过程中,未遇到特大的问题。官方文档中提供的Examples可以在命令行中直接使用,但在pycharm上则需要添加部分语句,不过算是比较容易解决的小问题。

转载于:https://www.cnblogs.com/choibunbing/p/7143307.html

相关文章:

hibernate 和 mybatis 的区别

【转载】:JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结转载于:https://www.cnblogs.com/virgosnail/p/10054987.html

VC中基于 Windows 的精确定时

方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来…

VMware虚拟机安装之后,打开时找不到启动Centos的界面

#VMware虚拟机安装之后,打开时找不到启动Centos的界面 只要在VMware中打开查看–自定义–库,之后就看到自己已经创建好的虚拟机系统 我也是因为自己不小心上次关机之前把左边那个窗口关闭了

service iptables status无法执行,报错

1. service iptables status 结果为edirecting to /bin/systemctl stop iptables.service Failed to stop iptables.service: Unit iptables.service not load 3.安装Iptables-services 在root 用户下,执行指令 yum installl iptables-services3.设置开机启动 …

Qt5的cmake文件位置

D:\APICenter\Qt\Qt5.8.0\5.8\msvc2015\lib\cmake\Qt5\Qt5Config.cmake转载于:https://www.cnblogs.com/coolbear/p/7149079.html

2018-12-2

博客第一天,今天申请通过,我以为我上个星期就已经申请通过了。没想到博客还得申请一下,哈哈,今天终于成功了,加油哦转载于:https://www.cnblogs.com/h-wei/p/10056227.html

重载、重写和隐藏

重载、重写和隐藏 重载、重写和隐藏是很容易混淆的类似概念。虽然所有这三种技术都使您得以创建同名的成员,但它们之间有一些重要的差异。 重载的成员用于提供属性或方法的不同版本,这些版本具有相同名称但是接受不同数量的参数或者接受不同数据类型的参…

[整理] - Relational Engine之UMS Internals

SQL Server 6.5使用Windows的调度处理管理多线程,和其它Windows应用程序一样,它使用Windows标准API,没有用到任何隐藏API,这使得 SQL Server的工作线程同其它多线程Windows程序完全一样,没有任何特殊的优先级&#xff…

跟踪workflow instance 状态

场景是这样的: 1.workflowruntime启动了持久化和监听服务 2.workfllowruntime创建多个实例,并启动,一些会长时间延时,一些会中途暂停,会不同的执行状态(业务状态) 3.另有一winform控制台,有个表格,刷新显示每个实例的信息,包括业务状态--比如创建,运行,挂起等 4.通过workflowru…

尝试Java,从入门到Kotlin(上)

之前一直使用C#开发,最近由于眼馋Java生态环境,并借着工作服务化改造的契机,直接将新项目的开发都转到Java上去。积攒些Java开发经验,应该对.NET开发也会有所启发和益处。 从理论上说,Java和C#语言差别不大&#xff0c…

Centos7状态下查看防火墙状态及修改服务端口

查看当前主机监听哪些服务端口 netstat -telunp查看防火墙firewall开放端口 fiewall-cmd --list-ports增加对外开放的端口 firewall-cmd --zonepublic --add-port8080/tcp --permanent扩充)关闭某个端口 firewall-cmd --permanent --remove-port8080/tcp重启防火墙 firewa…

VMWare中CentOS7 设置固定IP且能够访问外网

最近搭建kubernetes集群环境时遇到一个问题,CentOS7在重启后IP发生变化导致集群中etcd服务无法启动后集群环境变得不可用,针对这种情况,必须要对CentOS7设置固定IP且可以访问外网(下载镜像用)。 首先关闭VMware的DHCP&…

使用ASP.NET Atlas编写显示真实进度的ProgressBar(进度条)控件

当后台在进行某些长时间的操作时,如果能在页面上提供一个显示真实进度的进度条,而不是让用户不知情的等待或是从前的那些简单的估计,将是一个非常难得的出彩之处。现在使用ASP.NET Atlas完全有可能做到这些。这篇文章将讨论如何完成这一功能并…

初始化Mysql系统报错,begin failesd--conpilation aborted at scripts........

在编译安装Mysql之后进行初始化,但是出现了报错 初始化mysql scripts/mysql_install_db --basedir/usr/local/mysql --datadir/usr/local/mysql/data --usermysqlBEGIN failed–compilation aborted at scripts/mysql_install_db line 42 从报错的结果中看出Can…

asp.net Core多环境读取Json

IHostingEnviroment 获取环境相关洗洗 IsDevelopment()、IsStaging()、IsProduction() 分别为:开发、准生产、生产环境 IsEnviroment("Uat") 自定义环境,比如自定义Uat环境 新建: appsettings.Uat.json文件 {"Enviroment": "Uat" }Controller文件…

Microsoft Anti-Cross Site Scripting Library V1.5 发布了

Microsoft Anti-Cross Site Scripting Library V1.5 发布了 微软反跨站攻击脚本库 v1.5。此下载包含Microsoft Application Security Anti-Cross Site Scripting Library的分发组件.Anti-Cross Site Scripting Library可以为网站开发人员提供基于Web应用防护,以抵御源自 Cross-…

nodejs高版本转低版本

需要安装 第一步: npm install --save-dev babel-register npm install --save-dev babel-polyfill //由于只安装babel-register,无法解决低版本问题所以需要这个 npm install --save-dev babel-preset-latest //高版本到低版本js的一条路需要指定babelrc 最后需要创建文件: .b…

替换不文明词语和非法字符

//替换不文明词语和非法字符stringStrReplaceSk(stringcheckstr){ string repstr""; if(Application["repstr"] ! null) { repstr Application["repstr"].ToString(); } else { Uri myUri new Uri("http:…

BZOJ4568: [Scoi2016]幸运数字(线性基 倍增)

题意 题目链接 Sol 线性基是可以合并的 倍增维护一下 然后就做完了&#xff1f;&#xff1f; 喵喵喵&#xff1f; // luogu-judger-enable-o2 #include<bits/stdc.h> #define LL long long using namespace std; const int MAXN 2e4 10, B 60; inline LL read() {cha…

centos7给MySQL配置环境变量

centos7给MySQL配置环境变量 配置好了环境变量&#xff0c;就可以不用每次想要使用mysql时都要到/usr/local/mysql/bin&#xff0c;所以需要配置以下环境变量 编辑配置文件&#xff0c;加入环境变量 Vi /etc/profile在文件后面加上环境变量 export PATH$PATH:/usr/local/mys…

SQL2000联机丛书:使用和维护数据仓库

本次摘录 来源于SQL2000联机丛书中 创建和使用数据仓库概述为的是对数据仓库有个概观的认识使用数据仓库SQL 查询 --------- 最终用户很少使用结构化查询语言 (SQL) 查询直接访问数据仓库数据。 分析 SQL 查询很复杂&#xff0c;必须具有数据库专…

activiti自己定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

注&#xff1a;&#xff08;1&#xff09;环境搭建&#xff1a;activiti自己定义流程之Spring整合activiti-modeler5.16实例&#xff08;一&#xff09;&#xff1a;环境搭建&#xff08;2&#xff09;创建流程模型&#xff1a;activiti自己定义流程之Spring整合activiti-model…

[rails] 我的订餐系统 -- 小试ruby on rails(转)

前言 近期在java社区中一种新的脚本语言ruby,及用ruby开发的一个wab框架 rails也热闹了起来.引起了不少的java开发人员的关注&#xff0e; 本人平时还是很少接触脚本语言方面东东,看到相关的评论例如: "习惯约定优于配置" -- 那样就用象java那样麻烦且繁杂…

DateReader,DateAdapter,DateSet和SqlCommand的基本使用方法

1usingSystem;2usingSystem.Data;3usingSystem.Data.SqlClient;45namespaceDemo36{ 7 /**//// <summary> 8 /// Class1 的摘要说明。 9 /// </summary>10 class Class111 {12 /**//// <summary>13 /// 应用程序的主入口点。14 /// </summary>15 [S…

JAVA实现长连接(含心跳检测)Demo

实现原理&#xff1a; 长连接的维持&#xff0c;是要客户端程序&#xff0c;定时向服务端程序&#xff0c;发送一个维持连接包的。 如果&#xff0c;长时间未发送维持连接包&#xff0c;服务端程序将断开连接。客户端&#xff1a; Client通过持有Socket的对象&…

java开发环境变量配置-JDK11-(win10),重启之后环境变量配置失效的解决办法

win10安装jdk11及环境变量配置 如果你之前已经安装过java的老版本的话&#xff0c;建议先卸载一下&#xff0c;同时删除掉环境变量的配置&#xff0c;这样比较容易一次性成成功&#xff0c;直接到设置里面应用程序找到java卸载就好 下载JDK11 直接附上官网链接&#xff1a;htt…

Activity启动流程图

转载于:https://www.cnblogs.com/dikeboy/p/10064610.html

sql 70-229 考试样题(1)

转&#xff1a;1&#xff0e;你是一数据公司的数据库开发者&#xff0c;你创建了一个用来存储15个不同高校运动会统计表的数据库。这些信息将被用在50家公司的网页设置上。每个公司的WEB设置以不同的格式来安排和显示这些统计表。你需要组装这些数据传送到这些公司去&#xff0…

HDU 5616 Jam's balance(01背包)

题目网址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid5616 题目&#xff1a; Jams balance Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1810 Accepted Submission(s): 754 Problem Description…

datagrid DataFormatString

DataFormatString格式字符串 DataFormatString"{0:格式字符串}" 在DataFormatString 中的 {0} 表示数据本身&#xff0c;而在冒号后面的格式字符串代表所们希望数据显示的格式&#xff1b; 数字、货币格式&#xff1a;在指定的格式符号后可以指定小数所要显示的位数…