一、课程目标
-》大数据是什么?大数据能做什么? -》什么是Hadoop?Hadoop的设计思想? -》Hadoop如何解决大数据的问题?(什么是hdfs与yarn、MapReduce) -》如何快速部署Hadoop环境(伪分布)二、大数据的应用及发展 -》本质上的大数据技术: -》学习一系列的软件工具(hadoop、spark)处理数据? -》怎么处理? -》大数据工程师与数据分析师区别? -》数据分析师偏业务型:小数据量,样本分析 -》第二层处理 -》大数据(分析)工程师偏技术型:大数据量,总体分析 -》第一层的分析处理 -》应用及其工作岗位? -》大数据分析:商业化公司 -》百度统计 -》友盟 -》talking data -》Google Analytic -》易分析 -》精准营销/推荐系统/数据预测/风险控制 -》用户画像:打标签 -》数据挖掘/机器学习 -》相关大数据技术? -》数据采集 flume sqoop Logstash -》数据存储 HDFS Hbase Hive tacyon redie kakfa -》数据处理 MapReduce Hive spark storm flink kylin -》数据应用 -》数据可视化 -》用户画像 -》推荐系统 -》数据挖掘 -》学习以上技术基础 Java(多线程、常见工具:集合类、字符串、日期、JVM) SQL:大数据分析主流 Linux:所有的大数据平台都搭建在Linux上三、Hadoop的介绍 -》hadoop功能: -》Google的论文 -》GFS:大数据存储 -》MapReduce:大数据计算 -》BigTable : 解决大数据实时存储(Hbase) -》大数据存储 HDFS -》大数据计算 MapReduce -》版本: hadoop1: hdfs MapReduce hadoop2: hdfs MapReduce yarn -》hadoop的官网 hadoop.apache.org -》Hadoop四大组件 Hadoop Common: The common utilities that support the other Hadoop modules. 功能:用于支持其他模块和其他工具的接口 Hadoop Distributed File System (HDFS?): A distributed file system that provides high-throughput access to application data. 功能:分布式文件系统,用于存储大量数据的 Hadoop YARN: A framework for job scheduling and cluster resource management. 功能:分布式任务调度和资源管理 Hadoop MapReduce: A YARN-based system for parallel processing of large data sets. 功能:分布式处理数据计算模型(方式) -》分布式概念:区别于传统的单节点 -》分布式存储 -》单节点: 1个2TB文件:每台电脑拥有600GB存储空间 -》自己手动将2TB文件拆分成4个小文的 -》在第一台机器存储一个文件 -》一直存到第4台机器 问题: -》存储时,自己手动将文件分割 -》1个文件 -》 4个文件 -》读,读4个文件 -》分布式: 1个2TB文件:每台机器拥有600GB存储空间 -》将每台机器彼此之间构建一种关系 -》让所有的机器变成一个整体:集群cluster -》分布式计算 -》单节点:两颗CPU8核 64GB 一台机器执行:10天 -》分布式:集群:20颗CPU80核 640GB 单台 * 10 集群机器执行:1天四、分布式存储:HDFS -》HDFS:分布式文件系统 -》功能: -》管理存储文件 -》文件数据的读写 -》特点: -》分布式:将多台机器组成一个集群 -》CS模式: 客户端:client 服务端:Server -》主从架构: 主:NameNode(只有一个) -》接收客户端的请求 -》负责管理所有的从节点 -》负责管理元数据(内存) -》数据文件存储的账本 -》每个文件被分成了几个块 -》每个块有几个副本 -》分别每个块存在那台机器 从:DataNode(可以有很多个) -》负责真正的数据的读写 客户端: -》提交用户的所有请求给服务端 -》将用户的文件存储时进行分割 -》将用户的文件读取时进行合并 Secondary NameNode:辅助进程 -》功能:辅助NameNode备份元数据 将NameNode内存中的元数据同步到本地磁盘中 -》分块: HDFS会将用户存入的每一个文件按照128M一个块进行分块 500M: block1:128M block2:128M block3:128M block4:116M 每个块存储在不同从节点中 -》副本:安全 HDFS默认会为每个块复制两份,所以每一个块在hdfs上总共存了3份 node1 node2 node3 node4 block1 block2 block3 block4 block2 block1 block2 block1 block3 block3 block4 block4 -》读写流程 用户 客户端 服务端 我们自己 命令行 NameNode/DataNode-》写:
-》用户操作客户端提交写的请求 -》客户端将用户提供的文件进行分块,128M一个块 -》客户端将第一个块写请求给NameNode -》NameNode接收客户端请求,NameNode会返回该数据块存储的DataNode的地址 -》客户端选择离自己最近的那台机器将数据块提交给那台DataNode,第一台存储的DataNode会将数据块进行复制给其他的两台DataNode -》DataNode将存储结果返回给NameNode,NameNode记录元数据 -》重复以上操作,直到每个块都存完了 -》客户端所有块存储完成,直接返回 -》读 -》客户通过客户端发送读请求 -》客户端请求NameNode,NameNode返回每个块的存储地址 -》客户端从离自己最近的机器上读取每个块,将每个块进行合并成一个文件,返回给客户 -》HDFS是逻辑还是实际文件系统? -》HDFS是由多台机器合在一起变成集群,对外提供统一接口的 -》HDFS是一个软件 软件 操作系统 硬件 hdfs Linux文件系统 硬盘 -》HDFS是一个基于多台机器的文件系统构建的一个虚拟的FS -》所有的程序运行的物理流程 -》启动程序 -》读取硬盘中的数据加载到内存 -》CPU只能读取内存中的数据五、Hadoop的安装部署 -》hadoop部署模式 -》本地模式:一般用于开发程序的测试 -》伪分布式:一台机器,一般用于测试 -》完全分布式:企业实际环境 -》Linux环境准备 -》配置所有机器的ip、主机名、映射 -》关闭分防火墙、selinux -》创建统一的目录及用户 -》必须使用一个普通用户来操作 rdedu -》设置统一的安装目录 sudo mkdir -p /opt/modules :这个目录用作安装目录 sudo mkdir -p /opt/datas :这个目录用作放数据文件 sudo mkdir -p /opt/tools :这个目录用作放软件安装包 sudo chown -R rdedu:rdedu /opt/modules sudo chown -R rdedu:rdedu /opt/datas sudo chown -R rdedu:rdedu /opt/tools -》Linux句柄数:最大线程数、最大文件数…… -》配置SSH免密钥登录: ssh:是一种安全加密协议 ssh username@hostname ssh bigdata-training01.erongda.com:以当前用户登录该机器 exit:退出 -》配置ssh免密钥登录 ssh-keygen -t rsa 放入命令行执行,一路回车 ssh-copy-id bigdata-training01.erongda.com -》配置时间同步:分布式集群中要求每一台机器的时间是一致 -》安装JDK -》上传jdk到tools目录下 -》解压安装: tar -zxf /opt/tools/jdk-8u91-linux-x64.tar.gz -C /opt/modules/ -》配置环境变量:sudo vim /etc/profile 注意:这个文件不能随便乱动,如果不小心修改了什么,强制退出不要保存 在文件的尾部添加: export JAVA_HOME=/opt/modules/jdk1.8.0_91 export PATH=$PATH:$JAVA_HOME/bin -》刷新环境变量 source /etc/profile -》验证: java -version-》Hadoop安装部署
-》下载安装Hadoop -》发行公司: -》Apache -》Cloudera:CDH -》HortonWorks:HDP -》星环大数据:TDH -》发行版本 -》Hadoop1:1.x和0.x -》Hadoop2:企业中最多 2.5-2.9 -》Hadoop3:去年发布正式版本,生产环境一般不会用的 -》下载地址 http://archive.apache.org/dist/ -》解压安装 tar -zxvf /opt/tools/hadoop-2.7.3.tar.gz -C /opt/modules/ cd /opt/modules/hadoop-2.7.3/ bin:该目录一般存放命令或者客户端 etc/conf:配置文件目录 lib:放依赖jar包 logs:放日志文件 -》修改配置 http://hadoop.apache.org/docs/r2.7.6/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation /opt/modules/hadoop-2.7.3/etc/hadoop :配置文件目录 -》修改env文件 hadoop-env.sh: mapred-env.sh: yarn-env.sh: export JAVA_HOME=/opt/modules/jdk1.8.0_91 -》修改site文件 core-site.xml:配置Hadoop的全局属性 <!--指定HDFS的地址即NameNode的地址--> <property> <name>fs.defaultFS</name> <value>hdfs://bigdata-training01.erongda.com:8020</value> </property> mkdir /opt/modules/hadoop-2.7.3/datas <!--指定Hadoop的临时存储目录--> <property> <name>hadoop.tmp.dir</name> <value>/opt/modules/hadoop-2.7.3/datas</value> </property> hdfs-site.xml:配置HDFS的属性 slaves:用于指定所有从节点的地址 bigdata-training01.erongda.com -》启动服务 -》第一次使用HDFS,先进行格式化 cd /opt/modules/hadoop-2.7.3/ bin/hdfs namenode -format -》启动HDFS 启动主节点 sbin/hadoop-daemon.sh start namenode 启动从节点 sbin/hadoop-daemon.sh start datanode -》测试运行 -》jps 6582 Jps 6328 NameNode 6479 DataNode -》访问web端口:50070 在浏览器中输入:ip:50070 192.168.134.222:50070 -》hdfs的文件系统:类似于Linux文件系统,从/目录开始 -》执行HDFS的客户端操作 -》创建文件夹 bin/hdfs dfs -mkdir -p /wordcount/input -》上传文件:从Linux到hdfs bin/hdfs dfs -put /opt/datas/wc.txt /wordcount/input/ -》下载文件:从hdfs到Linux bin/hdfs dfs -get /wordcount/input/wc.txt ~/ -》删除文件 bin/hdfs dfs -rm -r /test -》查看文件 bin/hdfs dfs -cat /wordcount/input/wc.txt -》复制、移动…… -cp -mv 客户 -> 客户端 -> NameNode/DataNode -》关闭HDFS sbin/hadoop-daemon.sh stop namenode sbin/hadoop-daemon.sh stop datanode Connection refused:连接拒绝 -》主机地址解析不对 -》服务没有开启(端口没有开放)六、分布式资源管理和任务调度:Yarn -》资源管理 -》所有资源(整个集群中所有的资源)分配 10台机器 每台机器1核1G -》任务调度 -》一次性提交10个程序 -》谁先运行,谁后运行?每个程序能用多少资源? -》特点: -》分布式 -》主从架构 主:ResourceManager -》负责接收所有用户的请求 -》负责管理所有从节点 -》负责资源管理和任务调度 从:NodeManager -》负责真正执行程序 -》MapReduce程序在Yarn上执行的流程 1-客户通过客户端提交处理数据的程序 2-客户端将请求提交给RM,RM随机选择一个NM,在该NM上启动APP Master 3-APP Master向RM请求资源和指令 4-RM中的Resource Schedule将每台NM能够使用的资源信息和指令封装成container返回给APP Master 注意:真正resourcemanager做的是资源管理,控制所有nodemanager能够使用自己多少资源 5-APP Master将资源和指令发送给所有的NM 6-所有的NM,启动Map task和Reduce task来运行程序 7-每个NM运行完成之后将结果反馈给APP Master 8-APP Master将运行结果返回给RM -》MapReduce的运行过程 input:输入 map:将一个大任务拆分成多个小的任务 shuflle reduce:将每个小任务的结果进行合并 ouput:将结果进行保存 -》安装部署Yarn -》下载解压Hadoop -》修改配置 -》修改hdfs配置 -》修改MapReduce配置:etc/hadoop/mapred-site.xml mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml <!--指定MapReduce程序运行在yarn上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> -》修改Yarn配置:etc/hadoop/yarn-site.xml <!--指定yarn上运行的程序的类型--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--指定resourcemanager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>bigdata-training01.erongda.com</value> </property> -》修改slaves文件:指定datanode和nodemanager的地址 -》启动服务 启动resourcemanager sbin/yarn-daemon.sh start resourcemanager 启动nodemanager sbin/yarn-daemon.sh start nodemanager -》测试运行 7376 ResourceManager 7714 Jps 7010 NameNode 7604 NodeManager 6479 DataNode 访问web端口:8088 http://192.168.134.222:8088 -》提交wordcount程序 统计文件中每个单词出现多少次 -》将MapReduce程序提交给Yarn来执行,让nodemanager按照MapReduce的方式来执行 -》MapReduce输入默认读hdfs的文件,必须已存在 -》MapReduce输出的目录是不能提前存在的 bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /wordcount/input/wc.txt /wordcount/ouput 通过yarn客户端提交运行一个jar包,jar包在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar路径下,运行jar包中的wordcount程序,输入目录是/wordcount/input/wc.txt,输出目录是/wordcount/ouput -》必须记住端口; NameNode的RPC端口:8020 NameNode的http端口:50070 ResourceManager的Rpc端口:8032 ResourceManager的http端口:8088 -》所有客户端的请求、心跳、汇报等等都走rpc端口 -》所有web界面的提供都走http端口 -》关机前记得关闭所有进程 将启动命令中的 start更换为stop如有问题,欢迎纠正!!!
如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9614615.html