去实习,发现工业界用的大多用这种大数据处理方式。
一些自己的理解:
- Spark是基于内存计算的大数据分布式计算框架,提高了数据处理的实时性,同时保证了高容错性和高可伸缩性。
- Hadoop是一种分布式系统基础架构,包含计算框架MapReduce、分布式文件系统HDFS。Spark是MapReduce的替代方案,而且兼容HDFS、Hive等分布式存储系统,可融入Hadoop生态。
- Spark是用Scala开发的,Scala是函数式编程,实现算法非常简洁优雅。
- Scala即有面向对象组织项目工程的能力,又有计算数据的功能;它可以被看作是一个升级版的Java,可以调用Java的任何功能。
环境搭建:
我用的mac系统,IntelliJ IDEA(idea)环境,网上有很多安装教程,我这里就简略写了:
安装Java -> 安装Scala -> (安装Hadoop -> 安装Spark) -> 安装Idea -> 在Idea里配置Scala环境
但其实通常本地只需要idea和scala,hadoop和spark在开发机或服务器上已经搭好了。
注意各个安装过程,环境变量的配置!(~/.bash_profile)
注意Scala, Hadoop, Spark的版本对应关系!!
- Spark与Scala: https://mvnrepository.com/artifact/org.apache.spark/spark-core
- Spark与Hadoop: spark下载时会有提示
常用的命令:
1. "hadoop fs -"+linux命令,如:
hadoop fs -ls 路径 查看文件列表
hadoop fs -mkdir 名称 新建文件夹
hadoop fs -du -h 路径 查看磁盘占用情况
hadoop fs -cat 文件路径 查看文件内容
hadoop fs -get hdfs路径 本地路径 下载文件
hadoop fs -put 本地路径 hdfs路径 上传文件
2. nohup命令,不挂起执行程序:
nohup bash xxx.sh params > xxx.log 2>&1 &
运行脚本并重定向输入到.log文件,将标准错误2重定向到标准输出&1,&1再被重定向输入到.log文件中。&1也可以是个文件,如下所示:
nohup xxx.sh parmas >xxx.log 2>xxx.error &
这样两种信息就被分别保存了。
另:ps -aux |grep xxx.sh 查看sh进程
history|grep xxx.sh 查看历史命令(包括别人的命令)
3. Maven编译Scala:
mvn clean install