- 使用此镜像,安装好集群环境,记录下各个节点的ip
- 将master.sh放入主节点的/home/xxx目录下;将slave.sh放入从节点的/home/xxx目录下;将start-master.sh放入主节点/home/xxx目录下;将start-slave.sh放入从节点/home/xxx目录下;将hadoop目录放入主节点/home/xxx路径下;将hive目录放入主节点/home/xxx路径下。xxx可自定义
-
对于从节点执行以下代码
sed -i 's/\r$//' ./*.sh
chmod +x ./*.sh
source ./slave.sh
-
对于主节点执行以下代码,其中master.sh的参数为各个从节点的ip
sed -i 's/\r$//' ./*.sh
chmod +x ./*.sh
source ./master.sh 192.168.137.242 192.168.137.190 192.168.137.178
-
安装完毕后,刷新环境变量
source /etc/profile
-
安装完毕后,对于从节点执行以下代码
./start-slave.sh
-
安装完毕后,对于主节点执行以下代码
./start-master.sh
-
运行com.spark.test.WordCount
或者使用maven打jar包,将jar包上传至master节点。通过以下命令运行
spark-submit --class com.spark.test.WordCount ./WordCount-1.0-SNAPSHOT.jar 你的文件路径
jps
命令,与下表后台任务对照,对照一致则成功。
任务名 | 由谁启动 |
---|---|
Jps | java |
QuorumPeerMain | zookeeper |
NameNode | hadoop |
SecondaryNameNode | hadoop |
ResourceManager | hadoop |
Master | spark |
任务名 | 由谁启动 |
---|---|
Jps | java |
QuorumPeerMain | zookeeper |
DataNode | hadoop |
NodeManager | hadoop |
RunJar | hive |
Worker | spark |
版本 | 更新内容 | 更新日期 |
---|---|---|
0.0.1.0 | 配置主从节点hosts文件;配置主节点免密登录;配置主从节点防火墙 | 2021年10月31日 |
0.0.2.0 | 配置时区同步服务;配置jdk | 2021年10月31日 |
0.1.0.0 | 配置安装zookeeper;添加启动脚本 | 2021年10月31日 |
0.1.1.0 | 配置安装hadoop | 2021年11月1日 |
0.1.2.0 | 从节点配置安装mysql | 2021年11月2日 |
0.1.3.0 | 安装hive | 2021年11月5日 |
0.1.4.0 | 配置并启动Hive | 2021年11月6日 |
0.1.5.0 | hive连接mysql提供jdbc;安装配置scala | 2021年11月7日 |
0.1.6.0 | 修复若干bug;安装配置spark | 2021年11月7日 |
0.1.7.0 | 修复bug;spark启动失败 | 2021年11月13日 |
0.1.8.0 | 修复bug;spark不显示web管理界面 | 2021年11月14日 |
0.1.9.0 | 设置主机名为不同名称 | 2021年11月15日 |
1.0.0.0 | scala版本改为2.11.11 | 2021年11月16日 |
1.1.0.0 | 添加WordCount的Spark任务 | 2021年11月17日 |
1.2.0.0 | 通过RDD的方式执行WordCount任务 | 2021年11月17日 |
1.3.0.0 | 通过DataFrame的方式执行WordCount任务 | 2021年11月17日 |
1.3.1.0 | 优化执行方式;添加hadoop-client依赖 | 2021年11月17日 |
1.4.0.0 | 添加电信基站案例 | 2021年11月20日 |
1.4.1.0 | 禁用hdfs权限,dfs.permissions设置false | 2021年11月20日 |
1.5.0.0 | 添加JsonFile案例 | 2021年11月21日 |
1.6.0.0 | 添加Dataset案例 | 2021年11月22日 |
1.7.0.0 | 完善手机基站案例 | 2021年11月28日 |
1.8.0.0 | 补充淘宝行为记录案例 | 2021年11月30日 |
1.8.1.0 | 新增淘宝数据案例的DataFrame实现 | 2021年11月30日 |
1.9.0.0 | WordCount案例分别使用RDD, Dataset, Spark SQL三种方式实现;淘宝数据案例使用RDD, Spark SQL实现 | 2021年12月1日 |
1.9.1.0 | 补充淘宝数据案例的Dataset实现 | 2021年12月1日 |
1.10.0.0 | 通过SparkSQL实现手机基站案例 | 2021年12月2日 |
1.10.1.0 | 通过DataFrame实现手机基站案例 | 2021年12月3日 |
1.10.2.0 | 补充RDD[Row]转DataFrame方法 | 2021年12月9日 |
1.11.0.0 | 补充身高年龄案例 | 2021年12月11日 |
1.11.1.0 | 年龄案例补充Spark SQL做法 | 2021年12月12日 |
1.12.0.0 | 新增全国总决赛题目 | 2021年12月15日 |
- 安装的时候尽量避免多次
hadoop namenode -format
因为重复格式化会造成主从节点的数据版本号不一致,需要修改一致了才能正常运行。 - 如果scala运行时莫名其妙报错Exception in thread "main" org.apache.spark.SparkException,可以先打包再运行试试。并且建议IDEA直接连接spark调试每次运行前都打包,否则结果可能和代码不一致。使用spark-submit没这个问题
- 如果直接在IDEA中调试spark,需要加上conf.setJars和conf.setIfMissing并保证开发环境与spark环境能互相ping通。否则会报WARN TaskSchedulerImpl: Initial job has not accepted any resources
- map是对每一个元素进行操作;flatMap是对每一个元素操作后再展平,仅适用于返回结果是List或元组;mapPartitions是对每一个分片进行处理,输入输出是整个分片对应的iterator;mapPartitionsWithIndex是在此基础上增加分区号;mapValues搭配分组使用,输入是每组value组成的一个元组
- groupByKey输出value是同组各value组成的元组;groupBy输出的value是同一组的key, value;分组与聚合总体的输出包含key
- sortBy是对x扩展出来的矩阵按照某一列排序,而不是对x排序
- 在hadoop的map-reduce中,map相当于对每个元素操作,shuffle相当于分组,reduce相当于聚合
- 如果用Dataset读取表读取到一堆null,有可能是数据类型与schema给定类型不一致
- 如果涉及到列的类型变化的适合用RDD做法和DataFrame做法,如果都是SQL的常用操作适合使用Spark SQL做法,如果只有一列适合用RDD做法