赞
踩
第一讲:大数据基础入门
第一节:为什么要学习大数据 1、目的:很好工作 2、对比:Java开发和大数据开发 第二节:什么是大数据? 举例: 1、商品推荐: 问题:(1)大量的订单如何存储? (2)大量的订单如何计算? 2、天气预报: 问题:(1)大量的天气数据如何存储?(2)大量的天气数据如何计算? 什么是大数据,本质? (1)数据的存储:分布式文件系统(分布式存储) (2)数据的计算:分布式计算 第三节:Java和大数据是什么关系? 1、Hadoop:基于Java语言开发 2、Spark: 基于Scala语言,Scala基于Java语言 第四节:学习大数据需要的基础和路线 1、学习大数据需要的基础:Java基础(JavaSE)---> 类、继承、I/O、反射、泛型***** Linux基础(Linux的操作) ---> 创建文件、目录、vi编辑器*** 2、学习路线: (1)Java基础和Linux基础 (2)Hadoop的学习:体系结构、原理、编程 (*)第一阶段:HDFS、MapReduce、HBase(NoSQL数据库) (*)第二阶段:数据分析引擎 ---> Hive、Pig 数据采集引擎 ---> Sqoop、Flume (*)第三阶段:HUE:Web管理工具 ZooKeeper:实现Hadoop的HA Oozie: 工作流引擎 (3)Spark的学习 (*)第一个阶段:Scala编程语言 (*)第二个阶段:Spark Core-----> 基于内存,数据的计算 (*)第三个阶段:Spark SQL -----> 类似Oracle中的SQL语句 (*)第四个阶段:Spark Streaming ---> 进行实时计算(流式计算):比如:自来水厂 (4)Apache Storm:类似Spark Streaming ---> 进行实时计算(流式计算):比如:自来水厂 (*)NoSQL:Redis基于内存的数据库
第二课:Hadoop的背景起源一: GFS: Google File System
一、什么是大数据,本质?
(1)数据的存储:分布式文件系统(分布式存储)-----> HDFS: Hadoop Distributed File System
(2)数据的计算:分布式计算
二、如何解决大数据的存储?----> 分布式文件系统(HDFS,来源于GFS)
举例:网盘
(1) GFS: 没有硬盘的,数据只能存在内存中
(2) Hadoop的安装模式
(*)本地模式 :1台
(*)伪分布模式:1台
(*)全分布模式:3台
第三课:Hadoop的背景起源二:MapReduce
一、什么是大数据,本质?
(1)数据的存储:分布式文件系统(分布式存储)-----> HDFS: Hadoop Distributed File System
(2)数据的计算:分布式计算
二、如何解决大数据的计算?分布式计算
(1)什么是PageRank(MapReduce的问题的来源)
(*) 搜索排名
(2)MapReduce(Java语言实现)基础编程模型: 把一个大任务拆分成小任务,再进行汇总
(*) 更简单一点例子
第四课:Hadoop的背景起源三 : BigTable ----> 大表 ----> NoSQL数据库:HBase
第一节:关系型数据库(Oracle、MySQL、SQL Server)的特点
1、什么是关系型数据库?基于关系模型(基于二维表)所提出的一种数据库
2、ER(Entity-Relationalship)模型:通过增加外键来减少数据的冗余
3、举例:学生-系
第二节:什么是BigTable?: 把所有的数据保存到一张表中,采用冗余 ---> 好处:提高效率
1、因为有了bigtable的思想:NoSQL:HBase数据库
2、HBase基于Hadoop的HDFS的
3、描述HBase的表结构
第五课:搭建Hadoop的环境
准备实验的环境: 1、安装Linux、JDK 2、配置主机名、免密码登录 3、约定:安装目录:/root/training 安装: 1、解压 : tar -zxvf hadoop-2.4.1.tar.gz -C /root/training/ 2、设置环境变量: vi ~/.bash_profile HADOOP_HOME=/root/training/hadoop-2.4.1 export HADOOP_HOME PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export PATH 生效环境变量: source ~/.bash_profile 第一节:Hadoop的目录结构 第二节:Hadoop的本地模式 1、特点:不具备HDFS,只能测试MapReduce程序 2、修改hadoop-env.sh 修改第27行:export JAVA_HOME=/root/training/jdk1.7.0_75 3、演示Demo: $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar 命令:hadoop jar hadoop-mapreduce-examples-2.4.1.jar wordcount /root/data/input/data.txt /root/data/output/wc 日志:17/08/04 23:28:38 INFO mapreduce.Job: map 100% reduce 100% 注意:MR有一个默认的排序规则 第三节:Hadoop的伪分布模式 1、特点:具备Hadoop的所有功能,在单机上模拟一个分布式的环境 (1)HDFS:主:NameNode,数据节点:DataNode (2)Yarn:容器,运行MapReduce程序 主节点:ResourceManager 从节点:NodeManager 2、步骤: (1)hdfs-site.xml <!--配置HDFS的冗余度--> <property> <name>dfs.replication</name> <value>1</value> </property> <!--配置是否检查权限--> <property> <name>dfs.permissions</name> <value>false</value> </property> (2)core-site.xml <!--配置HDFS的NameNode--> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.88.11:9000</value> </property> <!--配置DataNode保存数据的位置--> <property> <name>hadoop.tmp.dir</name> <value>/root/training/hadoop-2.4.1/tmp</value> </property> (3) mapred-site.xml <!--配置MR运行的框架--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> (4) yarn-site.xml <!--配置ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>192.168.88.11</value> </property> <!--配置NodeManager执行任务的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> (5) 格式化NameNode hdfs namenode -format 日志:Storage directory /root/training/hadoop-2.4.1/tmp/dfs/name has been successfully formatted. (6) 启动:start-all.sh (*) HDFS: 存储数据 (*) Yarn:执行计算 (7) 访问:(*)命令行 (*)Java API (*)Web Console: HDFS:http://192.168.88.11:50070 Yarn:http://192.168.88.11:8088
第六讲:HDFS的基本操作
第一节:HDFS的相关命令 -mkdir 在HDFS创建目录 hdfs dfs -mkdir /data -ls 查看当前目录 hdfs dfs -ls / -ls -R 查看目录与子目录 -put 上传一个文件 hdfs dfs -put data.txt /data/input -moveFromLocal 上传一个文件,会删除本地文件:ctrl + X -copyFromLocal 上传一个文件,与put一样 -copyToLocal 下载文件 hdfs dfs -copyToLocal /data/input/data.txt -get 下载文件 hdfs dfs -get /data/input/data.txt -rm 删除文件 hdfs dfs -rm /data/input/data.txt -getmerge 将目录所有的文件先合并,再下载 -cp 拷贝: hdfs dfs -cp /data/input/data.txt /data/input/data01.txt -mv 移动: hdfs dfs -mv /data/input/data.txt /data/input/data02.txt -count 统计目录下的文件个数 -text、-cat 查看文件的内容 hdfs dfs -cat /data/input/data.txt -balancer 平衡操作 第二节:HDFS的Java API (*)在HDFS上创建一个目录: 依赖的jar包: /root/training/hadoop-2.4.1/share/hadoop/common/lib /root/training/hadoop-2.4.1/share/hadoop/common/ /root/training/hadoop-2.4.1/share/hadoop/hdfs/lib /root/training/hadoop-2.4.1/share/hadoop/hdfs/
import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class TestMain { public static void main(String[] args) throws Exception { // 使用HDFS的API创建目录 //设置NameNode地址 Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://192.168.88.11:9000"); //得到HDFS的文件系统 FileSystem fs = FileSystem.get(conf); fs.mkdirs(new Path("/folder1")); } }
第七讲:MapReduce入门
第一节:回顾:MapReduce的编程模型
第二节:WordCount的流程分析
1、伪分布环境运行WordCount
hadoop jar hadoop-mapreduce-examples-2.4.1.jar wordcount /data/input/data.txt /data/output/wc
日志:
17/08/05 01:12:24 INFO mapreduce.Job: map 0% reduce 0%
17/08/05 01:12:30 INFO mapreduce.Job: map 100% reduce 0%
17/08/05 01:12:35 INFO mapreduce.Job: map 100% reduce 100%
2、分析的数据流动的过程(重要): 运行原理和机制
第八课:开发WordCount程序
依赖jar:
/root/training/hadoop-2.4.1/share/hadoop/common/lib
/root/training/hadoop-2.4.1/share/hadoop/common/
/root/training/hadoop-2.4.1/share/hadoop/mapreduce/lib
/root/training/hadoop-2.4.1/share/hadoop/mapreduce/
package demo; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCountMain { public static void main(String[] args) throws Exception { //创建一个job = map + reduce Configuration conf = new Configuration(); //创建一个Job Job job = Job.getInstance(conf); //指定任务的入口 job.setJarByClass(WordCountMain.class); //指定job的mapper job.setMapperClass(WordCountMapper.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(LongWritable.class); //指定job的reducer job.setReducerClass(WordCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(LongWritable.class); //指定任务的输入和输出 FileInputFormat.setInputPaths(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); //提交任务 job.waitForCompletion(true); } }
package demo; import java.io.IOException; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public class WordCountMapper extends Mapper<LongWritable, Text, Text, LongWritable> { @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { /* * key: 输入的key * value: 数据 I love Beijing * context: Map上下文 */ String data= value.toString(); //分词 String[] words = data.split(" "); //输出每个单词 for(String w:words){ context.write(new Text(w), new LongWritable(1)); } } }
package demo; import java.io.IOException; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; public class WordCountReducer extends Reducer<Text, LongWritable, Text, LongWritable>{ @Override protected void reduce(Text k3, Iterable<LongWritable> v3,Context context) throws IOException, InterruptedException { //v3: 是一个集合,每个元素就是v2 long total = 0; for(LongWritable l:v3){ total = total + l.get(); } //输出 context.write(k3, new LongWritable(total)); } }
第九课:Spark基础
第一节:什么是Spark?Spark的特点和结构 1、什么是Spark? Spark是一个针对大规模数据处理的快速通用引擎。 类似MapReduce,都进行数据的处理 2、Spark的特点: (1)基于Scala语言、Spark基于内存的计算 (2)快:基于内存 (3)易用:支持Scala、Java、Python (4)通用:Spark Core、Spark SQL、Spark Streaming MLlib、Graphx (5)兼容性:完全兼容Hadoop 3、Spark体系结构:主从结构 (1)主节点:Master (2)从节点:Worker 第二节:搭建Spark的伪分布模式环境 1、解压:tar -zxvf spark-2.1.0-bin-hadoop2.4.tgz -C ~/training/ 2、配置参数文件: conf/spark-env.sh export JAVA_HOME=/root/training/jdk1.7.0_75 export SPARK_MASTER_HOST=bigdata11 export SPARK_MASTER_PORT=7077 conf/slaves ----> 从节点的主机信息 bigdata11 3、启动Spark伪分布环境 sbin/start-all.sh Spark Web Console: http://192.168.88.11:8080
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。