Spark学习笔记(一)

我想写写我目前阶段学习Spark的基本目标和进阶目标。基本目标:

  1. 搭建Spark集群
  2. 编写Spark应用程序(熟悉Spark接口,Java、Python、Scala、SQL)
  3. 掌握分析需要并行处理的问题的分析框架并利用Sprk解决
  4. 了解Spark应用的案例(Spark Streaming、机器学习、数据分析MLlib、GraphX、SparkR)

进阶目标:

  1. 研读Spark的源码(Spark核心中的分布式、批处理、流处理、懒执行等实现)
  2. 分析Spark核心的架构如何支撑并演变出的生态圈
  3. 其他(Spark + Hadoop、

笔记不做无脑搬运,一个一个字打上去,理解后用自己的语言表达。概念定义沿用以保证准确,笔记的目的是整理出条理性的步骤、可背诵的要点。


实验部分:(一)Spark环境搭建

Spark 2.3.2环境搭建参考官方文档说明即可.

要点:

  • Spark runs on Java 8+, Python 2.7+/3.4+ and R 3.1+. For the Scala API, Spark 2.3.2 uses Scala 2.11.
  • Note that support for Java 7, Python 2.6 and old Hadoop versions before 2.6.5 were removed as of Spark 2.2.0. Support for Scala 2.10 was removed as of 2.3.0.

知识要点(一)

1.Spark的组成

Spark的组件:Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX、集群管理器。

Spark组件

2. 什么是Spark核心?

Spark核心是一个对由很多计算任务组成的、运行在多个工作机器或者是一个计算集群上的应用进行调度、分发以及监控的计算引擎

3. Spark API中的核心类(Dataset、DataFrame、Encoder、SparkSession、)

Dataset是强大的已定义格式的特定领域的对象,可以通过功能性和相关性操作并行传输。DataFrame是Dataset的列。DataSet上的操作分为两类:transformation和action。

Transformations are the ones that produce new Datasets, and actions are the ones that trigger computation and return results.Datasets are “lazy”, i.e. computations are only triggered when an action is invoked.

  • 典型的transformation有:map、filter、select、aggregate(groupBy)
  • 典型的action有:count、show、writing data out to file systems.

4. Spark API中的重要函数

explain、schema、read、

5. flatMap和map的区别

6. 对Scala函数式编程的理解

Hadoop学习(2)-伪分布式配置

总是在笔记前,提醒自己,标明配置环境,重要细节不用怕麻烦,后期及时修改,做到准确可回溯。


环境说明

Windows 10 Pro

VMWare 12.5.5

Ubuntu 16.04.2 Server

server-jre-8u131-linux-x64

Hadoop架构

hadoop包含三个模块

1.Hadoop Common:

支持其他模块的工具模块

2.Hadoop Distributed File System (HDFS™):

分布式文件系统,提供了对应用程序数据的高吞吐量访问。

[进程]

  • NameNode // 名称节点 –NN
  • DataNode // 数据节点 –DN
  • SecondaryNamenode // 辅助名称节点 –2ndNN

3.Hadoop YARN:

yet another resource negotiate, 作业调度与集群资源管理的框架。

[进程]

  • ResourceManager //资源管理器–RM
  • NodeManager //节点管理器–NM

4.Hadoop MapReduce:

基于yarn系统的对大数据集进行并行处理技术。

配置Hadoop

1.Standalone/local

独立/本地模式,使用的本地文件系统。 nothing!!! 查看文件系统的方式:

$>hadoop fs -ls

没有启动任何java进程。 用于测试和开发环境.

2.Pseudodistributed mode

伪分布模式

[配置过程]

e.配置SSH

安全登录.

1)安装ssh

$>sudo apt-get install ssh

2)生成秘钥对

$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$>cd ~/.ssh					//查看生成的公私秘钥

3)导入公钥数据到授权库中

$>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

如果下一步无法登录到localhost,需要查看你之前是不是已经配置过密钥,两个密钥间换行间隔。

4)登录到localhost

$>ssh localhost
$>....yes
$>exit
$>ssh localhost				//不需要密码

5)格式化hdfs文件系统

$>hadoop namenode -format

6)启动所有进程

$>start-all.sh

image

7)查看进程

$>jps				//5 RM NM NN DN 2NN

image

8)查看文件系统

$>hadoop fs -ls

9)创建文件系统

$>hadoop fs -mkdir -p /user/ubuntu/data
$>hadoop fs -ls -R / //-lsr

3.Fully distributed mode

完全分布式

有关hadoop进程处理

1.查看hadoop进程个数(5)

$>jps
	NN
	DN
	2NN
	RM
	NM

2.如果进程数不对,杀死所有进程

$>stop-all.sh

3.重新格式化系统

$>hadoop namenode -format

4.启动所有进程

$>start-all.sh

5.jps

Hadoop学习(1)-安装Hadoop(独立模式)

总是在笔记前,提醒自己,标明配置环境,重要细节不用怕麻烦,后期及时修改,做到准确可回溯。


环境说明

Windows 10 Pro

VMWare 12.5.5

Ubuntu 16.04.2 Server

server-jre-8u131-linux-x64

安装Hadoop

安装JDK

安装Hadoop,首先安装JDK。从略。

安装Hadoop

cd /opt 
tar -zxvf hadoop-2.8.0.tar.gz
ln -s hadoop-2.8.0 hadoop

vim /etc/environment

更改

HADOOP_HOME="/opt/hadoop"
source /etc/environment

可以查看

hadoop version
Hadoop 2.8.0
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 91f2b7a13d1e97be65db92ddabc627cc29ac0009
Compiled by jdu on 2017-03-17T04:12Z
Compiled with protoc 2.5.0
From source with checksum 60125541c2b3e266cbf3becc5bda666
This command was run using /opt/hadoop-2.8.0/share/hadoop/common/hadoop-common-2.8.0.jar

默认就是独立模式,也叫本地模式,没有守护进程。用于开发和测试。