1. Hadoop
1. hadoop是一个分布式的、开源的、高可靠的、可扩展的软件框架。
分布式: 【GFS(存储),MapReduce(计算)两篇论文】【bigtable(大表)】
2. hadoop组成【2.7.3版本】
1. Hadoop Common
2. Hadoop Distributed Files System(HDFS)
【默认端口号:8020(1.0则是9000)】
【外部访问HDFS的端口号是50070,数据传输的端口号是50075】
【在虚拟机环境下部署,物理机访问linux下HDFS,必须开放50070和50075端口】3. Hadoop YARN【默认端口:8088】
4. Hadoop MapReduce
3. hadoop上层应用组件
1. Ambari:web端监控hadoop集群的工具
2. Avro:序列化数据系统
3. HBase:高可靠的、数据库
4. Hive:数据仓库
5. Spark:快速的、通用的计算引擎
6. Zookeeper:高可用的平台,在分布式之间协调
7. 【Hadoop Ozone】:关系型数据存储【3.0】
8. 【Hadoop Submarine】:机器学习【3.0】hadoop安装部署
- 搭建环境
- centos6.8
- 关闭防火墙
- 设置静态IP
- 修改主机名及hosts文件
- hadoop2.7.3
- jdk1.8
- 采用自建用户(hadoop/8426)
- 安装目录:/home/hadoop/soft/hadoop
- hadoop集群搭建的三种模式
- Local (Standalone)Mode:【本地模式】
[hadoop被配置作为单个Java进程以非分布式模式进行。主要用于debug] - Pseudo-Distributed Mode:【伪分布模式】
[hadoop伪分布模式运行在单节点上,每个hadoop守护进程占用单独的Java进程] - Fully-Distributed Mode:【完全分布模式】
hadoop配置文件位置(/home/hadoop/soft/etc/hadoop)
- core-site.xml(Common)
【hadoop-2.7.3.tar.gz/share/hadoop/common/hadoop-common-2.7.3.jar】 - hdfs-site.xml(HDFS)
【hadoop-2.7.3.tar.gz/share/hadoop/hdfs/hadoop-hdfs-2.7.3.jar】 - yarn-site.xml(YARN)
【hadoop-2.7.3.tar.gz/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.3.jar】 - mapred-site.xml(MapReduce)
【hadoop-2.7.3.tar.gz/share/hadoop/yarn/hadoop-yarn-common-2.7.3.jar】
- 剪切出test包【_test】
- 剪切出source包【_sources】
- 剪切出config包【_config】
- 剩下的是依赖包【_jar】
守护进程
- 开启守护进程【启动关闭没有顺序要求】
$>
- 单独开启守护进程【以当前窗口会话的形式开启】
$>hdfs namenode【50070端口是namenode的】
$>hdfs datanode$>hdfs secondarynamenode
【如果默认配置目录
$HADDOP_HOME/etc/hadoop不存在】
【那么开启守护进程时必须指定配置文件目录】
【$>hdfs --config ~/soft/hadoop/etc/hadoop namenode】
【以~/soft/hadoop/etc/hadoop作为配置文件路径进行启动守护线程】
【以这种方式启动就可以查看异常的信息】
- 通过单独开启3个守护线程(最常用的方式,启动后将进程挂到后台,不影响其他操作执行)
$>start namenode$>start datanode$>start secondarynamenode
- 关闭守护进程
- 整体关闭,调用
- $>
(不常用,会将不需要关闭的也关闭)
- 单独关闭守护进程
$>stop namenode$>stop datanode$>stop secondarynamenode
【 = + 】
【namenode与datanode的Cluster ID不相同,会产生冲突,namenode开启,系统检测到了之后,datanode就会被kill】
【默认的HDFS存储在/tmp目录下,生产环境下会更换路径】
hadoop默认配置路径
【$HADOOP_HOME/etc/hadoop】
【建议:采用软链接的方式配置hadoop默认路径!】
【因为,再安装完全分布式,或者高可用时,只要修改软链接的指向,就可以很方便指向对应目录】
初识HDFS文件系统
[hadoop@master etc]$
hdfs dfs -ls /[hadoop@master etc]$hdfs dfs -mkdir -p /use/mumu[hadoop@master etc]$hdfs dfs -ls /Found 1 items
drwxr-xr-x - hadoop supergroup 0 2019-07-29 17:03 /use
[hadoop@master etc]$hdfs dfs -ls -R /drwxr-xr-x - hadoop supergroup 0 2019-07-29 17:03 /use
drwxr-xr-x - hadoop supergroup 0 2019-07-29 17:03 /use/mumu
[hadoop@master mumu]$hdfs dfs -put 1556876534726.jpg /use/mumu[hadoop@master mumu]$hdfs dfs -ls /use/mumuFound 1 items
-rw-r–r-- 1 hadoop supergroup 1884551 2019-07-29 17:05 /use/mumu/1556876534726.jpg
[hadoop@master mumu]$
- hdfs dfs command
- hadoop fs command【常用】
HDFS启动加载顺序
【】
–> 【】:查找文件,并执行
–> 【】 :设置hadoop默认的参数变量 + 加载JVM + 设置classpath
–> 【】:加载JAVA_HOME,设置JVM参数
[echo “Starting namenode on [$NAMENODES]”]
–> 【】:启动守护进程
–> 【】:读取从节点(slaves)的节点信息
–> 【】:获取参数,调用HDFS命令执行开启守护进程
–> 【hdfs】:通过command命令检索对应的javaClass对象,然后调用执行
–> 【java.class】:执行main主函数
守护进程开启过程中出现的异常(非法操作导致)
- 重复执行<$ hdfs namenode -format>格式化命令
- 【导致datanode或namenode结点开启异常】
- 【解决方案:】修改{/tmp/hadoop-hadoop/dfs/name/current/VERSION}文件中的Cluster ID值,重新启动集群就可以了。
- 原因:由于重新格式化操作,将原有的{/tmp/hadoop-hadoop/dfs/name}目录重新定义
- 格式化操作步骤:
- 删除{/tmp/hadoop-hadoop}目录下的所有内容
- 执行格式化命令:$>
hdfs namenode -format
- 如果要保存原有的数据
- 修改所有的VERSION中的Cluster ID值,和其他属性,都改成一样的就行
修改HDFS默认存储路径
- 关闭HDFS环境
- 删除原hadoop-hadoop【/tmp/hadoop-hadoop】目录
- 修改默认存放数据的地址为
[src:core-site.xml]
<property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop-${}</value> <description>A base for other temporary directories.</description> </property>
【这个是设置HDFS存放数据地址的路径:
【/home/hadoop/tmp/hadoop-username/】
- [dest:$HADOOP_HOME/etc/hadoop/core-site.xml]
- 修改默认存放namenode节点数据的地址为
[src:hdfs-site.xml]
<property> <name>dfs.namenode.name.dir</name> <value>file://${hadoop.tmp.dir}/dfs/name</value> 【追加,/home/hadoop/backup/dfs/name】【追加这个是为了备份namenode数据】 <description>Determines where on the local filesystem the DFS name node should store the name table(fsimage). If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy. </description> </property>
【这个才是namenode节点存放数据的路径,这个路径在整个HDFS存放路径下的子路径】
【/home/hadoop/tmp/hadoop-username/】
- [dest:$HADOOP_HOME/etc/hadoop/hdfs-site.xml]
- 修改默认存放datanode节点数据的地址为
[hdfs-site.xml]
<property> <name>dfs.datanode.data.dir</name> <value>file://${hadoop.tmp.dir}/dfs/data</value> <description>Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. The directories should be tagged with corresponding storage types ([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for HDFS storage policies. The default storage type will be DISK if the directory does not have a storage type tagged explicitly. Directories that do not exist will be created if local filesystem permission allows. </description> </property>
【这个是datanode的存放位置,同namenode】
- [dest:$HADOOP_HOME/etc/hadoop/hdfs-site.xml]
- 格式化namenode【$>
hdfs namenode -format】【不报错情况下继续】 - 开启各个节点【namenode、datanode、secondarynamenode】
- 测试节点启动情况【jps】
【如果节点都开启,则成功。若有节点未开启,则利用hdfs command方式开启并查看异常】
HDFS主从分布
- 分布式文件系统采用主Master/从Slaves结构
【namenode守护进程作为Master节点】:维护HDFS的元数据信息[镜像文件+编辑日志]
【datanode守护进程作为Slaves节点】: - 参照【官方完档的HDFS Architecture】
面试题:
- 在开启时,默认给定守护进程的大小是多少?
【1000M】 - hadoop集群的瓶颈是?
- 网络x
- 内存x
- 【存储】
- 内核x
















