一、学习建议
-》学习思想
-》设计思想:分布式
-》数据采集
-》数据存储
-》数据计算
-》数据可视化
-》学习阶段
-》了解功能简单使用 -》java、java变量
-》安装部署配置环境 -》开发
-》熟练的使用,了解基本原理 -》java集合、线程、java web
-》深入了解架构、设计思想、性能调优 -》堆、栈、JVM,内存优化,架构设计
-》方法:
-》掌握hadoop设计思想
-》安装部署、简单使用:大部分框架都是类似
-》熟练使用:多练习
-》积累经验:记录所有的出错
-》多练习、多总结、理解架构
-》收集报错
-》出现问题
-》分析日志
warning:一般错误很少
error:
classnotfound
-》名称
-》检查环境变量
-》百度
-》沟通解决
-》更加理解原理和架构
二、大数据
-》核心:用大数据处理工具对数据进行分析处理,得到价值
-》特点:
-》数据量大的
-》数据量增长快
-》多样的
-》价值密度低的
-》真实的
-》hadoop诞生:hadoop1.x
-》HDFS:hadoop distribute file system ,分布式文件系统
-》MapReduce:分布式计算模型
三、Hadoop的介绍
-》hadoop是干嘛的?
-》大数据存储及处理工具
-》hadoop的组件及其功能?
-》hadoop1.x
-》hdfs
-》MapReduce
-》hadoop2.x
-》HDFS:分布式文件存储系统
-》MapReduce v2 : 分布式计算模型
-》YARN:分布式资源管理系统,负责任务调度和集群资源管理
-》计算机资源:CPU、内存、磁盘、网络
-》hadoop3.x
-》分布式集群
-》单机:一台机器,物理资源有限
-》分布式:多台机器,物理资源可以动态扩展
-》hadoop处理数据的过程
-》将数据存入hdfs
-》开发MapReduce程序
-》从hdfs中读取数据
-》处理数据
-》将处理后的结果写入hdfs
-》将开发好的程序打包成jar包
-》将jar包提交给yarn
-》yarn接收任务执行请求
-》yarn为该任务分配资源
-》执行MapReduce程序
-》input
-》map task
-》reduce task
-》output
-》HDFS:hadoop distribute file system,分布式文件系统
-》与传统文件系统相比,有什么特点?
-》分布式:解决大数据存储问题
-》分片机制:将一个文件按照大小自动拆分成多个文件
默认大小:128M/个 1G=8个block 1000M=8个block
-》副本机制:对每个块做备份,默认每个块有3份
机器1 block1-1 block2-3
机器2 block1-2 block2-2
机器3 block2-1 block1-3
文件:250M -> block1:128M block2:122M
-》如何自动的实现文件的切分、文件的合并
-》NameNode:老大,整个hdfs集群中的老大,负责管理
-》负责接收所有用户的请求
-》读
-》写:负责维护元数据(保存文件的信息:文件的块、存储位置)
-》用户向NameNode发送写的请求
-》NameNode返回文件写入的地址
-》用户将数据提交给DataNode
-》DataNode将数据写入,并且创建副本
-》写入成功后将结果反馈给NameNode
-》DataNode:小弟,整个hdfs集群中可以有很多小弟,负责存储
-》YARN:分布式任务调度和资源管理工具
-》yarn接收用户提交的任务请求:jar
-》ResourceManager:老大,负责管理,接收用户的请求
-》负责资源管理和任务调度
-》NodeManager:小弟,负责计算
-》执行MapReduce程序
-》RM接收到用户的请求
-》RM会随机选择一台NM作为该任务的分配节点
-》NM向RM申请资源,RM会分配一定的资源打包给NM
-》NM会在其他的NM,启动多个map和reduce task任务
-》负责的NM会收集执行的结果,汇报给RM
-》MapReduce:分布式计算模型
-》input:负责数据的输入,默认是hdfs
-》map:将一个大的任务分解成多个小的任务交给每台机器去执行
-》shuffle:溢写、分区、排序、分组~~~~~~~~~~~~
-》reduce:将所有map的结果进行合并
-》output:输出,默认是hdfs
四、Hadoop的安装部署
-》hadoop版本
-》Apache:发布更新都比较快
-》Cloudera:最稳定,修复了bug、兼容性
-》Hortonworks
-》mapr
-》Apache:
-》hadoop版本:
-》2.5.x-2.7.x
-》hadoop模式
-》本地模式:一般用于测试程序运行
-》默认读本地文件系统
-》只有task程序运行在jvm中
-》伪分布式:单节点的分布式,所有的进程都在一台机器上
-》老大和小弟都在一台机器上
-》完全分布式:工作企业环境
-》老大一般有一台
-》小弟有很多台
-》搭建伪分布式环境
-》Linux环境
-》网络:固定ip地址、DNS、网络能通外网、本地域名解析(每台机器的文件中包含所有机器的地址和主机名)
-》关闭防火墙和selinux
service iptables stop
chkconfig iptables off
vim /etc/selinux/config
SELINUX=disabled
-》普通用户:专门负责管理大数据应用:rdedu
修改连接为rdedu自动连接
-》ntp时间同步(完全分布式)
-》ssh免密钥登录(完全分布式)
-》创建大数据相关的文件夹
sudo mkdir /opt/tools
sudo mkdir /opt/modules
sudo mkdir /opt/datas
sudo chown -R rdedu:rdedu /opt/datas
sudo chown -R rdedu:rdedu /opt/modules/
sudo chown -R rdedu:rdedu /opt/tools/
-》安装jdk
-》检查自带jdk是否已经卸载
rpm -qa | grep java
-》解压
tar -zxvf 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
-》下载解压:http://archive.apache.org/dist/
tar -zxvf /opt/tools/hadoop-2.7.3.tar.gz -C /opt/modules/
-》目录结构
bin:命令
etc/conf/config/:配置文件
lib:依赖jar包
data/tmp:临时数据存储目录
logs:日志文件目录
sbin:启动脚本,管理类的命令
-》修改配置文件
-》修改env文件:用于配置环境变量
hadoop-env.sh
mapred-env.sh
yarn-env.sh
export JAVA_HOME=/opt/modules/jdk1.8.0_91
-》修改xml文件:
core-site.xml hadoop网络、hdfs入口等配置
-》配置hdfs的入口
-》配置hadoop的临时存储目录记得修改权限为rdedu
mkdir datas
/opt/modules/hadoop-2.7.3/datas
fs.defaultFS
hdfs://bigdata-training01.erongda.com:8020
hadoop.tmp.dir
/opt/modules/hadoop-2.7.3/datas
hdfs-site.xml hdfs相关的配置
dfs.replication
1
slaves 配置从节点(小弟)
nodemanager与DataNode都在同一台机器
mapred-site.xml MapReduce相关的配置
yarn-site.xml YARN相关配置
-》格式化文件系统
bin/hdfs namenode -format
-》启动hdfs
-》启动老大:NameNode
sbin/hadoop-daemon.sh start namenode
-》启动小弟:DataNode
sbin/hadoop-daemon.sh start datanode
-》测试查看
-》查看网页端口
192.168.134.188:50070
-》测试
bin/hdfs dfs -mkdir -p /test01
bin/hdfs dfs -put /opt/datas/wordcount.txt /test01/
bin/hdfs dfs -get /test01/wordcount.txt /home/rdedu/
bin/hdfs dfs -cat /test01/wordcount.txt
bin/hdfs dfs -ls /
bin/hdfs dfs -rm -r /test01
-》配置yarn和mapreduce
-》配置MapReduce:mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
mapreduce.framework.name
yarn
-》配置yarn:yarn-site.xml
yarn.resourcemanager.hostname
bigdata-training01.erongda.com
yarn.nodemanager.aux-services
mapreduce_shuffle
-》启动yarn
-》启动
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
-》测试运行
-》网页端口:
192.168.134.188:8088
-》提交运行MapReduce程序
wordcount程序:
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test01/wordcount.txt /wc-out/wc-out1
-》NameNode原理:管理元数据(内存)
-》第一次使用NameNode之前需要格式化
-》初始化元数据
-》初始化数据目录:hadoop.tmp.dir
-》启动时:
-》将本地元数据文件fsimage加载到内存中
-》启动DataNode,DataNode会向NameNode注册
-》DataNode注册成功,向老大汇报自己的block信息
-》客户端对hdfs进行读写
-》secondery NameNode 会根据条件将hdfs的修改日志edits与fsimage合并,生成新的faimage保存到本地
五、常见的HDFS配置
-》secondery NameNode
dfs.namenode.secondary.http-address
-》数据存储目录
-》元数据目录
dfs.namenode.name.dir
-》数据文件目录
dfs.datanode.data.dir
-》hdfs地址:fs.defaultFS
-》副本数:dfs.replication
-》块大小:dfs.blocksize
-》访问权限:dfs.permissions.enabled
dfs.permissions.enabled
false
-》一旦修改了配置文件,只有重启集群才会生效
-》core-site
-》重启hdfs,yarn
-》hdfs-site
-》重启hdfs
-》mapred-site/yarn-site
-》重启yarn