Spark+hadoop+mllib及相关概念与操作笔记

作者:

lw

版本:

0.1

时间:

2016-07-18

1、调研相关注意事项

a) 理解调研

调研的意义在于了解当前情况,挖掘潜在的问题,解决存在的疑问,并得到相应的方案。

b) 调研流程

首先明确和梳理现有的疑问是什么,要通过调研解决什么问题,然后再去做调研,发现问题,再解决问题。

c) 调研成果

最终需要得到结论与方案,以及详尽的论证理由,让别人信服。

d) 书写格式

版本与作者以及时间可以以表格的形式,整齐明了。

结论简洁明了,论证理由详尽写在后面。

2、Linux常见命令

a) Locate 参数

Locate 可能查找不到最新添加的文件,因为它从数据库中找,有的时候没有更新就找不到。

locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。

b) 查看系统版本

Uname -a:显示电脑及操作系统的相关信息

cat  /proc/version:说明正在运行的内核版本

cat  /etc/issue:显示的是发行版本的信息

lsb_release -a:(适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsb)

3、Linux环境变量的设置

Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。

a) 系统级:

/etc/profile:用于交互的Login shell,交互式shell的环境变量。执行bashrc此文件为系统的每个用户设置环境信息,当第一个用户登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

/etc/bashrc:非交互式shell的环境变量。为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。有些linux版本中的/etc目录下已经没有了bashrc文件。

/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。

b) 用户级(这些文件处于家目录下)

~/.profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里是推荐放置个人设置的地方

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。

~/.bash_profile 、~./bash_login:如果有则不读取.profile( ~/.bash_profile or ~./bash_login - If one of these file exist, bash executes it rather then "~/.profile" when it is started as a login shell. (Bash will prefer "~/.bash_profile" to "~/.bash_login"). However, these files won't influence a graphical session by default.)

~/.pam_environment:用户级的环境变量设置文件,没有做测试,不知道管不管用。

想对所有的用户生效,那就需要设置系统级的环境变量。反之,需要修改用户级的文件(最好是修改.profile文件,理由上面已经讲了)。

c) 生效

Source ~/.profile

4、Hadoop基本命令

Hadoop文件系统命令:hadoop fs -linux命令 参数

Eg: [root@master ~]# hadoop fs -ls /

Eg: [root@master ~]# hadoop fs -cat /lwtest/lw.txt

其中fs是fileSystem,然后 - 后面接一般的linux指令就行,即hadoop文件系统的操作和linux文件系统的操作基本上一致,这样不用浪费时间去记很多命令了。

5、相关概念

Hbase:分布式、面向列的开源数据库

Yarn:Hadoop资源管理器,可以为上层应用提供统一的资源管理和调度,提高资源利用率及方便数据共享

6、Spark集群

a) 命令:clush -a -b jps 显示当前运行的服务进程

b) Spark集群部署方式

参考:

http://www.cnblogs.com/liuyifeng/p/5690627.html

http://www.aboutyun.com/forum.php?mod=viewthread&tid=7115

MR:离线计算框架

Storm:实时计算框架

Spark:内存计算框架

i. Standalone

分别在集群的每台机器安装Spark,再启动相应的master和slave

ii. Spark On Mesos

iii. Spark On Yarn

使用Spark客户端向yarn提交任务运行。

部署方式:

1.将spark部署包放到yarn集群某个节点上面

2.yarn客户端读取yarn集群配置文件,在此过程中,spark的master和slave节点不需要启动

Ps:Yarn(淘宝团队) Mesos(豆瓣)

c) Hadoop web控制台端口

nameNodeIP:端口

Eg:

10.3.9.135:8088 Hadoop资源管理

10.3.9.135:50070 HDFS文件管理,节点信息

http://10.3.9.135:50070/explorer.html#/ 可以查看文件

参见:

http://www.cnblogs.com/laov/p/3433994.html

http://www.cnblogs.com/ggjucheng/archive/2012/04/17/2454590.html

帮助理解:

图:Hadoop分布图

图;Hadoop HDFS文件浏览

图:Hadoop常用端口

d) Spark例子运行

./bin/run-example SparkPi 10

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

The --master option specifies the master URL for a distributed cluster, or local to run locally with one thread, or local[N] to run locally with N threads. You should start by using local for testing. For a full list of options, run Spark shell with the --help option.

这--master选项指定master url 为一个分布式集群还是本地单线程的,或者local[N]本地N线程的。你应该开始使用本地测试,运行Spark shell --help选项。

e) Mllib例子运行

./bin/run-example mllib.JavaKMeans mllibTestData/kmeans_data.txt 3 100

mllib.JavaKMeans为相应的机器学习程序,是mllib文件夹下的JavaKMeans,后面三个是数据集 及相应参数。这里是K均值算法,后面3表示K的大小,100表示迭代次数。

f) Job提交

参考:http://spark.apache.org/docs/latest/submitting-applications.html

# 本地8线程运行应用

# Run application locally on 8 cores

./bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master local[8] \

/path/to/examples.jar \

100

Eg:./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ./lib/spark-examples-1.6.1-hadoop2.7.1.jar 10

# 单集群

# Run on a Spark standalone cluster in client deploy mode

./bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://207.184.161.138:7077 \

--executor-memory 20G \

--total-executor-cores 100 \

/path/to/examples.jar \

1000

# Run on a Spark standalone cluster in cluster deploy mode with supervise

./bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://207.184.161.138:7077 \

--deploy-mode cluster \

--supervise \

--executor-memory 20G \

--total-executor-cores 100 \

/path/to/examples.jar \

1000

#在Spark on Yarn的集群上提交应用 (目前的集群)

#Run on a YARN cluster

export HADOOP_CONF_DIR=XXX

./bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master yarn \

--deploy-mode cluster \  # can be client for client mode

--executor-memory 20G \

--num-executors 50 \

/path/to/examples.jar \

1000

Eg:

[root@master spark-1.6.1]#

./bin/spark-submit  \

--class  org.apache.spark.examples.SparkPi  \

--master yarn  \

--deploy-mode cluster  \

./lib/spark-examples-1.6.1-hadoop2.7.1.jar  \

10

其中SparkPi是通过蒙特卡罗思想就Pi的算法,10为其参数,大概指的是在单位为10的一个正方形里,正方形里包含一个半径为5的圆,然后生成随机数,均匀分布,数点落在圆里的数及全部的点数,通过面积的比例等于随机数分布的比例来求得Pi.

--deploy-mode cluster 在Yarn集群中需要指定。

g) 结果查看

参考:

http://www.360doc.com/content/14/0810/12/7853380_400765442.shtml

http://www.iteblog.com/archives/1028

System.out.println("Pi is roughly " + 4.0 * count / n);

在yarn上运行,程序默认输出直接输出到logs里面。

Yarn logs -applicationId xxx 可以查看运行结束的Application日志

Eg:

yarn logs -applicationId application_1467954918322_0037

输出:

…省略…

LogType:stdout

Log Upload Time:星期一 七月 25 11:18:59 +0800 2016

LogLength:23

Log Contents:

Pi is roughly 3.141328

End of LogType:stdout

…省略…

当然可以将结果输出到文本里面,代码:

counts.saveAsTextFile("/home/wyp/result");

或者:

counts.saveAsHadoopFile("/home/wyp/result",

Text.class,

IntWritable.class,

TextOutputFormat.class);

将结果存储到HDFS上的/home/wyp/result文件夹里,第一种输出格式是(key,value),第二种输出格式为key value.

我们可以根据自己的需要定义一个自己的输出格式,而且我们在输出的时候如果文件比较大,还可以指定输出文件的压缩方式。

h) 日志

hdfs dfs -ls /tmp/logs/root/logs/tmp/logs/root/logs/application_1467954918322_0059

Hadoop下spark应用日志存在/tmp/logs/root/logs/tmp/logs/root/logs/下面。每个应用id对应一个目录,里面有在不同节点上跑的日志的相应记录。同Yarn logs -applicationId xxx 所看到的信息。

7、Maven与eclipse

a) 安装Maven

http://dead-knight.iteye.com/blog/1841658

  1. 安装maven,并设置环境变量(网上有的是)
  2. 查看配置是否完成。mvn -v 出现版本信息,表示配置成功
  1. 设置仓库位置

默认的maven仓库位置为:C:\Users\Administrator\.m2(其中Administrator为当前账号)

仓库是用来存Maven运行时的一此插件的。比说archetyper的插件。

b) Eclicpse安装maven插件

Maven插件下载:http://pan.baidu.com/s/1i5weBZZ

解压后,把links、myplugins文件夹放到eclipse安装目录下,如下图所示:

并且修改links下的maven.link文件。指向myplugins目录即可。我的配置为:

path=F:/android/adt-bundle-eclipse/eclipse/myplugins/maven

重启eclipse

选择window->preferences->maven,如下图所示:

继续选择“User Settings”,配置maven的setting文件,如下图所示:

好,此时maven插件安装完毕。

c) 查看maven的console

d) 注意事项

Maven-archetype-quickstart与maven-archetype-profiles结构是一样的,即profiles即为quickstart.

e) 错误处理

i. Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart

解决方式:

  1. 从http://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.jar下载最新版maven-archetype-quickstart-1.1.jar
  2. 命令行到下载目录下执行mvn install:install-file -DgroupId=org.apache.maven.archetypes -DartifactId=maven-archetype-quickstart -Dversion=1.1 -Dpackaging=jar -Dfile=maven-archetype-quickstart-1.1.jar

出现BUILD SUCCESS则表示安装成功了,就可以通过eclispe建quickstart结构的工程了。如下图所示:

f) Pom.xml红叉

http://www.cnblogs.com/mymelody/p/5616685.html

  1. dependency格式不对,或者jar包没有,使得对应的包没有下载下来
  2. eclipse没有自己下载,出现missing情况

解决方法:

  1. 找到我们的本地maven仓库目录比如我的D:\java\mymaven
  2. 搜索出该目录下的*lastUpdated.properties文件并删除,如下图所示,可以通过模糊搜索匹配出这样的文件
  1. Maven 更新当前项目,maven就会继续下载缺失的依赖jar包,直至缺失jar包下载完成,上述问题就解决了。

g) 远程仓库

参考:http://www.cnblogs.com/dingyingsi/p/3856456.html

仓库:

http://repo2.maven.org/maven2/

http://uk.maven.org/maven2/

http://maven.apache.org

Other:

https://repository.jboss.org/nexus/content/repositories/releases/

http://repository.jboss.org/nexus/content/groups/public/

8、遇到错误

9、数据接入

http://blog.csdn.net/woshiwanxin102213/article/details/17584043

http://www.csdn.net/article/2015-02-13/2823955?ref=myread

Hive:是建立在Hadoop上的数据仓库基础构架。所有Hive数据都存储在Hadoop兼容的文件系统中(例:Amazon S3、HDFS)中。Hive在加载数据过程中不会对数据进行任何修改,只是将数据移动到HDFS中Hive设定目录下,因此,Hive不支持对数据的改写和添加。

HBase:分布式面向列的开源数据库。不同于一般的关系数据库,它适用于非结构化存储数据库。

JDBC:关系型数据库方访问API,可以访问多种数据库

Spark SQL:摆脱了对Hive的依赖,兼容Hive,可以从RDD、PARQUET文件、JSON文件中获取数据。

http://www.cnblogs.com/shishanyuan/p/4723604.html?utm_source=tuicool

http://www.csdn.net/article/2015-04-03/2824407

http://www.cnblogs.com/gaopeng527/p/4315808.html

内部:

http://developer.51cto.com/art/201603/507668.htm

RDD:(Resilient Distributed Datasets)弹性分布式数据集

DataFrame:是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格,被用于SQLContext相关操作。

DataSet:Dataset可以认为是DataFrame的一个特例,主要区别是Dataset每一个record存储的是一个强类型值而不是一个Row。

a) Spark sql连接mysql

  1. 下载mysql-connector-java-5.1.39-bin.jar http://www.itcast.cn/news/20151229/16012088060.shtml

10、HBase

a) Hbase shell

./hbase shell 进入 hbase shell.

http://www.cnblogs.com/heyCoding/archive/2012/11/09/2762334.html

scan ‘CityWeather’ , {VERSION => 10}

注意VERSION与VERSIONS的区别,一个是指定版本,一个是列出几个版本。

11、算法运行及结果

a) linear regression(线性回归)

i. JavaHdfsLR <file> <iters>

javaHdfsLR<文件><迭代次数>

本地:

./bin/spark-submit  --class  org.apache.spark.examples.JavaHdfsLR  --master local ./lib/spark-examples-1.6.1-hadoop2.7.1.jar  mllibTestData/lr_data.txt 1

集群:

./bin/spark-submit  --class  org.apache.spark.examples.JavaHdfsLR  --master yarn --deploy-mode cluster ./lib/spark-examples-1.6.1-hadoop2.7.1.jar  mllibTestData/lr_data.txt 1

结果:

LogType:stdout

Log Upload Time:星期一 七月 25 16:46:12 +0800 2016

LogLength:442

Log Contents:

Initial w: [0.4551273600657362, 0.36644694351969087, -0.38256108933468047, -0.4458430198517267, 0.33109790358914726, 0.8067445293443565, -0.2624341731773887, -0.44850386111659524, -0.07269284838169332, 0.5658035575800715]

On iteration 1

Final w: [246.25860765580322, 270.70869288178557, 371.354007739464, 357.4478152969409, 261.9494718512335, 210.01734831542458, 366.7061915626602, 381.34754796597383, 335.20416843810943, 240.24079035615807]

End of LogType:stdout

ii. JavaLR <input_dir> <step_size> <niters>

JavaLR<输入文件><步长大小><迭代次数>

./bin/spark-submit  --class  org.apache.spark.examples.mllib.JavaLR  --master yarn --deploy-mode cluster ./lib/spark-examples-1.6.1-hadoop2.7.1.jar  mllibTestData/lr-data/random.data 1 10

结果:

LogType:stdout

Log Upload Time:星期一 七月 25 17:03:14 +0800 2016

LogLength:47

Log Contents:

Final w: [0.6262094779767464,0.535113798652265]End of LogType:stdout

转载于:https://www.cnblogs.com/lwhp/p/5754023.html

Spark+hadoop+mllib及相关概念与操作笔记相关推荐

  1. 第71课:Spark SQL窗口函数解密与实战学习笔记

    第71课:Spark SQL窗口函数解密与实战学习笔记 本期内容: 1 SparkSQL窗口函数解析 2 SparkSQL窗口函数实战 窗口函数是Spark内置函数中最有价值的函数,因为很多关于分组的 ...

  2. 《Scala机器学习》一一第3章 使用Spark和MLlib

    第3章 使用Spark和MLlib 上一章介绍了在全局数据驱动的企业架构中的什么地方以及如何利用统计和机器学习来处理知识,但接下来不会介绍Spark和MLlib的具体实现,MLlib是Spark顶层的 ...

  3. Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API

    Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API 关键词:Local vector,Labeled point,Local matrix,Distrib ...

  4. 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作

    转载自  实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作 供稿 | eBay ADI-Carmel Team 作者 | 金澜涛 编辑 | 顾欣怡 本文7309字,预计阅读时 ...

  5. spark集群配置以及java操作spark小demo

    spark 安装 配置 使用java来操作spark spark 安装 tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz rm spark-2.4.0-bin-hadoo ...

  6. Spark hadoop票据过期问题HDFS_DELEGATION_TOKEN

    Spark streaming应用运行7天之后,自动退出,日志显示token for xxx(用户名): HDFS_DELEGATION_TOKEN owner=xxxx@xxxx.com, rene ...

  7. linux at24c 前几个字节错误,I2C操作笔记——以 AT24C04为例

    Centos7系统下修改主机名操作笔记 习惯了在Centos6系统下修改主机名的操作,但是Centos7下修改主机名的操作却大不相同!操作笔记如下: 在CentOS中,有三种定义的主机名:静态的(st ...

  8. 【计算机大数据毕设之基于spark+hadoop的大数据分析论文写作参考案例】

    [计算机大数据毕设之基于spark+hadoop的大数据分析论文写作参考案例-哔哩哔哩] https://b23.tv/zKOtd3L 目  录 一 引言​1 二 系统分析​2 2.1 必要性和可行性 ...

  9. Spark对接Hive:整合Hive操作及函数

    1.拷贝hive-site.xml文件到spark的conf目录下 2.[hadoop@hadoop002 bin]$ ./spark-shell --master local[2] --jars ~ ...

最新文章

  1. pytorch--nn.Sequential学习
  2. C语言函数题-利用指针,实现字符串比较函数
  3. 九度OJ 1051:数字阶梯求和
  4. EXE和SYS通信(ReadFile WriteFile DO_DIRECT_IO) 直接方式
  5. 前端学习(2511):组件注册
  6. 第8篇:Flowable快速工作流脚手架Jsite_请假实战_查看历史任务
  7. java 并发 变量_实例讲解Java并发编程之变量
  8. python截取指定字符串_python 正则匹配获取指定多个词的在字符串(句子/段落)索引位置...
  9. 计算机id不同于MAC,Gurman:Mac上的Face ID将在几年内出现
  10. java调python代码_java调用python代码
  11. struts2文件下载及文件名中文问题
  12. 图像分割评估指标——表面距离计算库
  13. WiFi 的认证方法
  14. 刘宇凡:新型鸡汤如何击溃传统鸡汤?
  15. HTML的DOCTYPE是什么意思
  16. (CVPR 2017)VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection
  17. 30000台苹果电脑遭恶意软件入侵,包括最新的M1系列
  18. 安全生产预测预警系统解决方案
  19. 【论文阅读30】-《Autocuts: Simultaneous Distortion and Cut Optimization for UV Mapping》
  20. MS90C386B:1Port LVDS转LVTTL

热门文章

  1. 软件评测-信息安全-应用安全-资源控制-用户登录限制(中)
  2. linux程序已经在后台运行冻结了_linux 让程序在后台运行的几种可靠方法
  3. python中字符串的布尔值_Python基础之字符串,布尔值,整数,列表,元组,字典,集合...
  4. 电脑下边的任务栏不见了_XP系统任务栏被空白工具栏占领快速删除办法
  5. oracle正在没落,Oracle停掉一个正在运行的job
  6. C#专业矩阵运算库——Math.Net
  7. gradient设置上下渐变_iOS 绘制渐变·实例篇
  8. html2canvas 截图div_浏览器端网页截图方案详解
  9. 发送延迟消息_微信延迟消息的发送方式
  10. 计算机网络测试两个主机连通性,计算机网络试卷A