Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/zongxr/bigdata-competition

全国大数据竞赛三等奖解决方案,省赛二等奖解决方案。一键安装大数据环境脚本,自动部署集群环境,包括zookeeper、hadoop、mysql、hive、spark以及一些基础环境。已通过实际服务器测试,效果极佳,仅需要输入密码等少量人为干预。解放安装部署配置所需人力。并添加若干scala案例,结合spark用以进行数据准备。
https://github.com/zongxr/bigdata-competition

bigdata hadoop hdfs hive mysql scala shell spark wordcount zookeeper

Last synced: 1 day ago
JSON representation

全国大数据竞赛三等奖解决方案,省赛二等奖解决方案。一键安装大数据环境脚本,自动部署集群环境,包括zookeeper、hadoop、mysql、hive、spark以及一些基础环境。已通过实际服务器测试,效果极佳,仅需要输入密码等少量人为干预。解放安装部署配置所需人力。并添加若干scala案例,结合spark用以进行数据准备。

Awesome Lists containing this project

README

        

全国大数据竞赛


hadoop
spark
Apache Hive

关于此项目


为什么做了这么一个项目?


这是全国大数据竞赛的题目,因为部分初学者对于安装配置大数据集群环境感到苦恼,所以做了这么一个解放人力的自动化脚本。能够省去安装过程中的诸多麻烦。

这个项目有什么用


使用它能一键自动安装大数据集群环境,自动给你配置环境变量,自动给你配置hosts,自动给你配置免密登录,自动给你做其他配置,非常方便。从基础环境搭建,到zookeeper,再到hadoop,再到mysql,再到hive,再到spark,一键完成,自动部署。

使用方法



  1. 使用此镜像,安装好集群环境,记录下各个节点的ip

  2. 将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可自定义


  3. 对于从节点执行以下代码

    sed -i 's/\r$//' ./*.sh

    chmod +x ./*.sh

    source ./slave.sh


  4. 对于主节点执行以下代码,其中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


  5. 安装完毕后,刷新环境变量

    source /etc/profile


  6. 安装完毕后,对于从节点执行以下代码

    ./start-slave.sh


  7. 安装完毕后,对于主节点执行以下代码

    ./start-master.sh


  8. 运行com.spark.test.WordCount

    或者使用maven打jar包,将jar包上传至master节点。通过以下命令运行

    spark-submit --class com.spark.test.WordCount ./WordCount-1.0-SNAPSHOT.jar 你的文件路径


怎么算部署成功了?


所有节点运行jps命令,与下表后台任务对照,对照一致则成功。

主节点

任务名由谁启动

Jpsjava

QuorumPeerMainzookeeper

NameNodehadoop

SecondaryNameNodehadoop

ResourceManagerhadoop

Masterspark

从节点

任务名由谁启动

Jpsjava

QuorumPeerMainzookeeper

DataNodehadoop

NodeManagerhadoop

RunJarhive

Workerspark

更新日志

版本更新内容更新日期

0.0.1.0配置主从节点hosts文件;配置主节点免密登录;配置主从节点防火墙2021年10月31日

0.0.2.0配置时区同步服务;配置jdk2021年10月31日

0.1.0.0配置安装zookeeper;添加启动脚本2021年10月31日

0.1.1.0配置安装hadoop2021年11月1日

0.1.2.0从节点配置安装mysql2021年11月2日

0.1.3.0安装hive2021年11月5日

0.1.4.0配置并启动Hive2021年11月6日

0.1.5.0hive连接mysql提供jdbc;安装配置scala2021年11月7日

0.1.6.0修复若干bug;安装配置spark2021年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.0scala版本改为2.11.112021年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设置false2021年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.0WordCount案例分别使用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日

项目经验



  1. 安装的时候尽量避免多次hadoop namenode -format因为重复格式化会造成主从节点的数据版本号不一致,需要修改一致了才能正常运行。

  2. 如果scala运行时莫名其妙报错Exception in thread "main" org.apache.spark.SparkException,可以先打包再运行试试。并且建议IDEA直接连接spark调试每次运行前都打包,否则结果可能和代码不一致。使用spark-submit没这个问题

  3. 如果直接在IDEA中调试spark,需要加上conf.setJars和conf.setIfMissing并保证开发环境与spark环境能互相ping通。否则会报WARN TaskSchedulerImpl: Initial job has not accepted any resources

  4. map是对每一个元素进行操作;flatMap是对每一个元素操作后再展平,仅适用于返回结果是List或元组;mapPartitions是对每一个分片进行处理,输入输出是整个分片对应的iterator;mapPartitionsWithIndex是在此基础上增加分区号;mapValues搭配分组使用,输入是每组value组成的一个元组

  5. groupByKey输出value是同组各value组成的元组;groupBy输出的value是同一组的key, value;分组与聚合总体的输出包含key

  6. sortBy是对x扩展出来的矩阵按照某一列排序,而不是对x排序

  7. 在hadoop的map-reduce中,map相当于对每个元素操作,shuffle相当于分组,reduce相当于聚合

  8. 如果用Dataset读取表读取到一堆null,有可能是数据类型与schema给定类型不一致

  9. 如果涉及到列的类型变化的适合用RDD做法和DataFrame做法,如果都是SQL的常用操作适合使用Spark SQL做法,如果只有一列适合用RDD做法