{"id":20519695,"url":"https://github.com/zongxr/bigdata-competition","last_synced_at":"2025-04-14T02:12:23.197Z","repository":{"id":112121914,"uuid":"422769692","full_name":"ZongXR/BigData-Competition","owner":"ZongXR","description":"全国大数据竞赛三等奖解决方案，省赛二等奖解决方案。一键安装大数据环境脚本，自动部署集群环境，包括zookeeper、hadoop、mysql、hive、spark以及一些基础环境。已通过实际服务器测试，效果极佳，仅需要输入密码等少量人为干预。解放安装部署配置所需人力。并添加若干scala案例，结合spark用以进行数据准备。","archived":false,"fork":false,"pushed_at":"2024-09-26T08:07:02.000Z","size":9472,"stargazers_count":35,"open_issues_count":0,"forks_count":11,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-14T02:12:05.625Z","etag":null,"topics":["bigdata","hadoop","hdfs","hive","mysql","scala","shell","spark","wordcount","zookeeper"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZongXR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-10-30T03:04:00.000Z","updated_at":"2025-03-28T01:32:37.000Z","dependencies_parsed_at":"2023-03-17T02:12:22.495Z","dependency_job_id":null,"html_url":"https://github.com/ZongXR/BigData-Competition","commit_stats":null,"previous_names":["zongxr/bigdata-competition"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZongXR%2FBigData-Competition","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZongXR%2FBigData-Competition/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZongXR%2FBigData-Competition/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZongXR%2FBigData-Competition/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZongXR","download_url":"https://codeload.github.com/ZongXR/BigData-Competition/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248809051,"owners_count":21164896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bigdata","hadoop","hdfs","hive","mysql","scala","shell","spark","wordcount","zookeeper"],"created_at":"2024-11-15T22:15:44.344Z","updated_at":"2025-04-14T02:12:23.170Z","avatar_url":"https://github.com/ZongXR.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003e全国大数据竞赛\u003c/h1\u003e\n\u003cimg src=\"https://hadoop.apache.org/hadoop-logo.jpg\" alt=\"hadoop\"\u003e\n\u003cimg src=\"https://spark.apache.org/images/spark-logo-rev.svg\" alt=\"spark\" width=\"141\" height=\"72\"\u003e\n\u003cimg alt=\"Apache Hive\" src=\"https://hive.apache.org/images/hive_logo_medium.jpg\"\u003e\n\u003ch2\u003e关于此项目\u003c/h2\u003e\n\u003ch3\u003e为什么做了这么一个项目？\u003c/h3\u003e\n这是全国大数据竞赛的题目，因为部分初学者对于安装配置大数据集群环境感到苦恼，所以做了这么一个解放人力的自动化脚本。能够省去安装过程中的诸多麻烦。\n\u003ch3\u003e这个项目有什么用\u003c/h3\u003e\n使用它能一键自动安装大数据集群环境，自动给你配置环境变量，自动给你配置hosts，自动给你配置免密登录，自动给你做其他配置，非常方便。从基础环境搭建，到zookeeper，再到hadoop，再到mysql，再到hive，再到spark，一键完成，自动部署。\n\u003ch2\u003e使用方法\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e使用\u003ca href=\"http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso\" target=\"_blank\"\u003e此镜像\u003c/a\u003e，安装好集群环境，记录下各个节点的ip\u003c/li\u003e\n\u003cli\u003e将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可自定义\u003c/li\u003e\n\u003cli\u003e\n对于从节点执行以下代码\u003cbr /\u003e\n\u003ccode\u003esed -i 's/\\r$//' ./*.sh\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003echmod +x ./*.sh\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003esource ./slave.sh\u003c/code\u003e\n\u003c/li\u003e\n\u003cli\u003e\n对于主节点执行以下代码，其中master.sh的参数为各个从节点的ip\u003cbr /\u003e\n\u003ccode\u003esed -i 's/\\r$//' ./*.sh\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003echmod +x ./*.sh\u003c/code\u003e\u003cbr /\u003e\n\u003ccode\u003esource ./master.sh 192.168.137.242 192.168.137.190 192.168.137.178\u003c/code\u003e\n\u003c/li\u003e\n\u003cli\u003e\n安装完毕后，刷新环境变量\u003cbr /\u003e\n\u003ccode\u003esource /etc/profile\u003c/code\u003e\n\u003c/li\u003e\n\u003cli\u003e\n安装完毕后，对于从节点执行以下代码\u003cbr /\u003e\n\u003ccode\u003e./start-slave.sh\u003c/code\u003e\n\u003c/li\u003e\n\u003cli\u003e\n安装完毕后，对于主节点执行以下代码\u003cbr /\u003e\n\u003ccode\u003e./start-master.sh\u003c/code\u003e\n\u003c/li\u003e\n\u003cli\u003e\n运行com.spark.test.WordCount\u003cbr /\u003e\n或者使用maven打jar包，将jar包上传至master节点。通过以下命令运行\u003cbr /\u003e\n\u003ccode\u003espark-submit --class com.spark.test.WordCount ./WordCount-1.0-SNAPSHOT.jar 你的文件路径\u003c/code\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2\u003e怎么算部署成功了?\u003c/h2\u003e\n所有节点运行\u003ccode\u003ejps\u003c/code\u003e命令，与下表后台任务对照，对照一致则成功。\n\u003ch3\u003e主节点\u003c/h3\u003e\n\u003ctable title=\"主节点\"\u003e\n\u003ctr\u003e\n\u003cth\u003e任务名\u003c/th\u003e\u003cth\u003e由谁启动\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eJps\u003c/td\u003e\u003ctd\u003ejava\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eQuorumPeerMain\u003c/td\u003e\u003ctd\u003ezookeeper\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNameNode\u003c/td\u003e\u003ctd\u003ehadoop\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSecondaryNameNode\u003c/td\u003e\u003ctd\u003ehadoop\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eResourceManager\u003c/td\u003e\u003ctd\u003ehadoop\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaster\u003c/td\u003e\u003ctd\u003espark\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch3\u003e从节点\u003c/h3\u003e\n\u003ctable title=\"从节点\"\u003e\n\u003ctr\u003e\n\u003cth\u003e任务名\u003c/th\u003e\u003cth\u003e由谁启动\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eJps\u003c/td\u003e\u003ctd\u003ejava\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eQuorumPeerMain\u003c/td\u003e\u003ctd\u003ezookeeper\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDataNode\u003c/td\u003e\u003ctd\u003ehadoop\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eNodeManager\u003c/td\u003e\u003ctd\u003ehadoop\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eRunJar\u003c/td\u003e\u003ctd\u003ehive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eWorker\u003c/td\u003e\u003ctd\u003espark\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2\u003e更新日志\u003c/h2\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003e版本\u003c/th\u003e\u003cth\u003e更新内容\u003c/th\u003e\u003cth\u003e更新日期\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.0.1.0\u003c/td\u003e\u003ctd\u003e配置主从节点hosts文件；配置主节点免密登录；配置主从节点防火墙\u003c/td\u003e\u003ctd\u003e2021年10月31日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.0.2.0\u003c/td\u003e\u003ctd\u003e配置时区同步服务；配置jdk\u003c/td\u003e\u003ctd\u003e2021年10月31日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.0.0\u003c/td\u003e\u003ctd\u003e配置安装zookeeper；添加启动脚本\u003c/td\u003e\u003ctd\u003e2021年10月31日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.1.0\u003c/td\u003e\u003ctd\u003e配置安装hadoop\u003c/td\u003e\u003ctd\u003e2021年11月1日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.2.0\u003c/td\u003e\u003ctd\u003e从节点配置安装mysql\u003c/td\u003e\u003ctd\u003e2021年11月2日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.3.0\u003c/td\u003e\u003ctd\u003e安装hive\u003c/td\u003e\u003ctd\u003e2021年11月5日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.4.0\u003c/td\u003e\u003ctd\u003e配置并启动Hive\u003c/td\u003e\u003ctd\u003e2021年11月6日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.5.0\u003c/td\u003e\u003ctd\u003ehive连接mysql提供jdbc；安装配置scala\u003c/td\u003e\u003ctd\u003e2021年11月7日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.6.0\u003c/td\u003e\u003ctd\u003e修复若干bug；安装配置spark\u003c/td\u003e\u003ctd\u003e2021年11月7日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.7.0\u003c/td\u003e\u003ctd\u003e修复bug；spark启动失败\u003c/td\u003e\u003ctd\u003e2021年11月13日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.8.0\u003c/td\u003e\u003ctd\u003e修复bug；spark不显示web管理界面\u003c/td\u003e\u003ctd\u003e2021年11月14日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e0.1.9.0\u003c/td\u003e\u003ctd\u003e设置主机名为不同名称\u003c/td\u003e\u003ctd\u003e2021年11月15日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.0.0.0\u003c/td\u003e\u003ctd\u003escala版本改为2.11.11\u003c/td\u003e\u003ctd\u003e2021年11月16日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.1.0.0\u003c/td\u003e\u003ctd\u003e添加WordCount的Spark任务\u003c/td\u003e\u003ctd\u003e2021年11月17日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.2.0.0\u003c/td\u003e\u003ctd\u003e通过RDD的方式执行WordCount任务\u003c/td\u003e\u003ctd\u003e2021年11月17日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.3.0.0\u003c/td\u003e\u003ctd\u003e通过DataFrame的方式执行WordCount任务\u003c/td\u003e\u003ctd\u003e2021年11月17日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.3.1.0\u003c/td\u003e\u003ctd\u003e优化执行方式；添加hadoop-client依赖\u003c/td\u003e\u003ctd\u003e2021年11月17日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.4.0.0\u003c/td\u003e\u003ctd\u003e添加电信基站案例\u003c/td\u003e\u003ctd\u003e2021年11月20日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.4.1.0\u003c/td\u003e\u003ctd\u003e禁用hdfs权限，dfs.permissions设置false\u003c/td\u003e\u003ctd\u003e2021年11月20日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.5.0.0\u003c/td\u003e\u003ctd\u003e添加JsonFile案例\u003c/td\u003e\u003ctd\u003e2021年11月21日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.6.0.0\u003c/td\u003e\u003ctd\u003e添加Dataset案例\u003c/td\u003e\u003ctd\u003e2021年11月22日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.7.0.0\u003c/td\u003e\u003ctd\u003e完善手机基站案例\u003c/td\u003e\u003ctd\u003e2021年11月28日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.8.0.0\u003c/td\u003e\u003ctd\u003e补充淘宝行为记录案例\u003c/td\u003e\u003ctd\u003e2021年11月30日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.8.1.0\u003c/td\u003e\u003ctd\u003e新增淘宝数据案例的DataFrame实现\u003c/td\u003e\u003ctd\u003e2021年11月30日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.9.0.0\u003c/td\u003e\u003ctd\u003eWordCount案例分别使用RDD, Dataset, Spark SQL三种方式实现；淘宝数据案例使用RDD, Spark SQL实现\u003c/td\u003e\u003ctd\u003e2021年12月1日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.9.1.0\u003c/td\u003e\u003ctd\u003e补充淘宝数据案例的Dataset实现\u003c/td\u003e\u003ctd\u003e2021年12月1日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.10.0.0\u003c/td\u003e\u003ctd\u003e通过SparkSQL实现手机基站案例\u003c/td\u003e\u003ctd\u003e2021年12月2日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.10.1.0\u003c/td\u003e\u003ctd\u003e通过DataFrame实现手机基站案例\u003c/td\u003e\u003ctd\u003e2021年12月3日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.10.2.0\u003c/td\u003e\u003ctd\u003e补充RDD[Row]转DataFrame方法\u003c/td\u003e\u003ctd\u003e2021年12月9日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.11.0.0\u003c/td\u003e\u003ctd\u003e补充身高年龄案例\u003c/td\u003e\u003ctd\u003e2021年12月11日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.11.1.0\u003c/td\u003e\u003ctd\u003e年龄案例补充Spark SQL做法\u003c/td\u003e\u003ctd\u003e2021年12月12日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e1.12.0.0\u003c/td\u003e\u003ctd\u003e新增全国总决赛题目\u003c/td\u003e\u003ctd\u003e2021年12月15日\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2\u003e项目经验\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e安装的时候尽量避免多次\u003ccode\u003ehadoop namenode -format\u003c/code\u003e因为重复格式化会造成主从节点的数据版本号不一致，需要修改一致了才能正常运行。\u003c/li\u003e\n\u003cli\u003e如果scala运行时莫名其妙报错Exception in thread \"main\" org.apache.spark.SparkException，可以先打包再运行试试。并且建议IDEA直接连接spark调试每次运行前都打包，否则结果可能和代码不一致。使用spark-submit没这个问题\u003c/li\u003e\n\u003cli\u003e如果直接在IDEA中调试spark，需要加上conf.setJars和conf.setIfMissing并保证开发环境与spark环境能互相ping通。否则会报WARN TaskSchedulerImpl: Initial job has not accepted any resources\u003c/li\u003e\n\u003cli\u003emap是对每一个元素进行操作；flatMap是对每一个元素操作后再展平，仅适用于返回结果是List或元组；mapPartitions是对每一个分片进行处理，输入输出是整个分片对应的iterator；mapPartitionsWithIndex是在此基础上增加分区号；mapValues搭配分组使用，输入是每组value组成的一个元组\u003c/li\u003e\n\u003cli\u003egroupByKey输出value是同组各value组成的元组；groupBy输出的value是同一组的key, value；分组与聚合总体的输出包含key\u003c/li\u003e\n\u003cli\u003esortBy是对x扩展出来的矩阵按照某一列排序，而不是对x排序\u003c/li\u003e\n\u003cli\u003e在hadoop的map-reduce中，map相当于对每个元素操作，shuffle相当于分组，reduce相当于聚合\u003c/li\u003e\n\u003cli\u003e如果用Dataset读取表读取到一堆null，有可能是数据类型与schema给定类型不一致\u003c/li\u003e\n\u003cli\u003e如果涉及到列的类型变化的适合用RDD做法和DataFrame做法，如果都是SQL的常用操作适合使用Spark SQL做法，如果只有一列适合用RDD做法\u003c/li\u003e\n\u003c/ol\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzongxr%2Fbigdata-competition","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzongxr%2Fbigdata-competition","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzongxr%2Fbigdata-competition/lists"}