第二章
一、搭建Hadoop的全分布模式
1、三台机器:bigdata12 bigdata13 bigdata14
2、每台机器准备工作:安装JDK、关闭防火墙、设置主机名
systemctl stop firewalld.service
systemctl disable firewalld.service
设置主机名 vi /etc/hosts
192.168.157.12 bigdata12
192.168.157.13 bigdata13
192.168.157.14 bigdata14
3、配置免密码登录
(1)在每台机器上产生公钥和私钥
ssh-keygen -t rsa
(2)需要将每台机器的公钥复制给其他机器(下面的三句话,需要在每台机器上执行)
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata12
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata13
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata14
4、保证每台机器的时间同步的
5、安装Hadoop的全分布环境(在主节点bigdata12上安装)
(1)解压设置环境变量
(2)修改配置文件
hadoop-env.sh
26行 export JAVA_HOME=/root/training/jdk1.8.0_144
hdfs-site.xml
<!--数据块的冗余度,默认是3-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--是否开启HDFS的权限检查,默认:true-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
core-site.xml
<!--NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata12:9000</value>
</property>
<!--HDFS数据保存的目录,默认是Linux的tmp目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/training/hadoop-2.7.3/tmp</value>
</property>
mapred-site.xml
<!--MR程序运行的容器是Yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
<!--ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata12</value>
</property>
<!--NodeManager运行MR任务的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
slaves: 配置的是所有的从节点
bigdata13
bigdata14
(3)格式化NameNode: hdfs namenode -format
6、将配置好的目录复制到bigdata13和bigdata14上
scp -r hadoop-2.7.3/ root@bigdata13:/root/training
scp -r hadoop-2.7.3/ root@bigdata14:/root/training
7、启动Hadoop集群(在主节点上): start-all.sh , 停止Hadoop集群: stop-all.sh
8、验证
(*)命令行:hdfs dfsadmin -report
(*)网页:HDFS:http://192.168.157.12:50070/
Yarn:http://192.168.157.12:8088
第四章:Hadoop的体系结构(非常重要):原理、结构、运行机制
一、HDFS的体系结构和运行原理
1、主节点:NameNode
()职责:管理HDFS
接收客户端的请求:上传数据、下载数据
管理和维护日志(edits文件)和元信息(指的是:数据块的位置信息:fsimage文件)
()HDFS的日志:edits文件
举例: 创建目录 ---> 产生日志
hdfs dfs -mkdir /mydemo1
查找edits文件:find . -name edits*
(1) edits_inprogress_0000000000000000105是二进制文件
(2)HDFS提供一个工具:edits viewer 日志查看器,转换成一个XML文件
hdfs oev -i edits_inprogress_0000000000000000105 -o ~/a.xml
<RECORD>
<OPCODE>OP_MKDIR</OPCODE>
<DATA>
<TXID>107</TXID>
<LENGTH>0</LENGTH>
<INODEID>16416</INODEID>
<PATH>/mydemo1</PATH>
<TIMESTAMP>1512565581211</TIMESTAMP>
<PERMISSION_STATUS>
<USERNAME>root</USERNAME>
<GROUPNAME>supergroup</GROUPNAME>
<MODE>493</MODE>
</PERMISSION_STATUS>
</DATA>
</RECORD>
(*)HDFS的元信息:fsimage文件:记录数据块的位置信息、冗余信息等等
查找fsimage文件:find . -name fsimage*
也是二进制的
HDFS也提供了一个工具:image viewer ,把fsimage文件转成文本、XML的文件
2、从节点:DataNode
(*)按数据块保存数据:1.x:64M 2.x:128M
(*)数据块在操作系统的位置:
find . -name blk*
/root/training/hadoop-2.7.3/tmp/dfs/data/current/BP-156326068-192.168.157.11-1512395988927/current/finalized/subdir0/subdir0
(*)设置数据块冗余度的基本原则
一般,冗余度跟数据节点的个数一样,最大不要超过3
3、第二名称节点:SecondaryNameNode,默认就跟NameNode在一起
(*)职责:定期进行日志信息的合并,edits ---> fsimage中
(*)掌握日志合并过程(重要)
二、Yarn的体系结构和运行原理:运行MapReduce的容器
cd /root/training/hadoop-2.7.3/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt /output/wc1206
1、主节点:ResourceManager
职责:(*)接收任务请求
(*)资源的分配
(*)任务分配
2、从节点:NodeManager
职责:(*)从ResourceManager获取任务和资源
(*)执行
3、调度MR任务的过程
4、资源分配方式
(1)FIFO Scheduler:先来先得
(2)Capacity Scheduler:容器管理
(3)Fair Scheduler:公平调度管理 ,前提:假设任务具有相同优先级,平均分配资源
三、HBase的体系结构和运行原理
HBase是基于HDFS之上的NoSQL数据库
1、主节点:HMaster
2、从节点:RegionServer