day05笔记
**********************************************
课程回顾:
(1)什么是大数据--4V
存储、计算和分析
(2)数据仓库--大数据 Share Nothing
(3)OLTP OLAP
(4)Google的三驾马车--GFS(HDFS) MR bigtable(Hbase)
**********************************************
1、Hadoop的安装准备工作
Hadoop名字来源--douge cutting
- (1)安装好linux操作系统(IP配置)
- (2)关闭防火墙
systemctl stop(disable) firewalld.service
(3) 安装Jdk--winscp 上传 opt/software 解压到 opt/moudle
(4) Hadoop安装包---虚拟机的克隆 scp(拷贝)
a、提前准备好 mkdir /opt/moudle
tar -zxvf hadoop-2.7.3.tar.gz -C /opt/moudle/
b、vi ~/.bash_profile 增加下面内容
HADOOP_HOME=/opt/moudle/hadoop-2.7.3
export HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
c、 环境变量生效
source ~/.bash_profile
通过 输入 start 按两下tab 看是否有内容
** 虚拟机克隆 **
(1)保证虚拟机处于关闭状态
(2)右键->管理->克隆 当前状态 完整克隆-->
(3)hostname--修改
ip修改 --reboot
Hadoop(HDFS+Yarn) 本地 伪分布 全分布
2、Hadoop安装---本地安装
(1)特点:没有HDFS和Yarn 只能够测试MR程序是否成功, 作为一个普通的java程序。
(2)修改文件:
vi hadoop-env.sh
set number
修改25行(行数不一 hadoop版本不一致)
JAVA_HOME=/opt/moudle/jdk1.8.0_181
cd /root/
mkdir temp
touch a.txt
vi a.txt
## mapred-site.xml 默认没有,我克隆的文件里面有 这个文件没有被覆盖指定了yarn资源 ##
3、Hadoop安装---本地安装伪分布模式
(1)特点:在一台机器上模拟一个分布式环境具备hadoop的所有功能。
HDFS:NameNode+DataNode+SecondarynameNode
Yarn:ResourceManager+NodeManager
(2)修改的文件:
**step1:hadoop-env.sh**
JAVA_HOME=/opt/moudle/jdk1.8.0_181
** step2:hdfs-site.xml**
<!--注释配置数据块的冗余度,默认是3-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--注释配置HDFS的权限检查,默认是true-->
<!--
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
-->
**step3:core-site.xml**
<!--配置HDFS主节点,namenode的地址,9000是RPC通信端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata124:9000</value>
</property>
<!--配置HDFS数据块和元数据保存的目录,一定要修改-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/moudle/hadoop-2.7.3/tmp</value>
</property>
**step4:mapred-site.xml(默认没有)**
cp mapred-site.xml.template mapred-site.xml
<!--配置MR程序运行的框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
**step5:yarn-site.xml**
<!--配置Yarn的节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata124</value>
</property>
<!--NodeManager执行MR任务的方式是Shuffle洗牌-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
** step 6:通过HDFS namenode 格式化**
在第4步中,hadoop.tmp.dir--格式化
命令:hdfs namenode -format
验证:是否格式化成功:
Storage directory /opt/moudle/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.
## 重复格式化:hadoop.tmp.dir 先停止集群,需要删除原来的tmp文件。 rm -rf 重新格式化 启动集群##
** 最后启动,通过start-all.sh启动**
验证(5个):5314 SecondaryNameNode
5586 NodeManager
5476 ResourceManager
5126 DataNode
5022 NameNode
web访问:http://10.1.255.124:8088 yarn
http://10.1.255.124:50070 HDFS
作业:准备3台机器。完成1 的准备工作。
加入到 etc/hosts
10.1.255.121 bigdata121
10.1.255.122 bigdata122
10.1.255.123 bigdata123
*************************************************
4、免密码登录的原理和配置
ssh不对称加密算法(加密和解密是两个文件)。(对称加密: 加密和解密文件是同一个)
![](2.png)
(1)公钥--锁:给出去 给其他机器。
(2)私钥--钥匙:自己留着,解密。
step1:ssh-keygen -t rsa(3次回车)
step2:ssh-copy-id -i ~/.ssh/id_rsa.pub root@bigdata124(自己也要拷贝给自己)
5、Hadoop安装---全分布模式 (重点)
(1)规划:
10.1.255.121 bigdata121 :主节点
10.1.255.122 bigdata122 :从节点
10.1.255.123 bigdata123 :从节点
![](3.png)
(2)准备工作:
step 1: jdk、防火墙、ssh免密码登录(3次拷贝)、在etc/hosts 添加主机名。
## 对于同时操作多台机器可通过 工具-》发送键输入到所有会话 在选项卡排列 实现 水平排列 ##
step 2:时间同步(如果能够上网) 使用网络时间(GUI设置)默认的都是一致的。
不能上网: date -s 2019-01-10(同时操作多台机器) 集群紊乱
ntp:在机器里面指定一个服务器 作为时钟服务器。
step 3: 修改配置文件()
### 主要在bigdata 121操作,其他机器通过scp拷贝。 ###
**1:hadoop-env.sh**
JAVA_HOME=/opt/moudle/jdk1.8.0_181
**2:hdfs-site.xml**
<!--注释配置数据块的冗余度,默认是3-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--注释配置HDFS的权限检查,默认是true-->
<!--
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
-->
**3:core-site.xml**
<!--配置HDFS主节点,namenode的地址,9000是RPC通信端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata124:9000</value>
</property>
<!--配置HDFS数据块和元数据保存的目录,一定要修改-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/moudle/hadoop-2.7.3/tmp</value>
</property>
**4:mapred-site.xml(默认没有)**
cp mapred-site.xml.template mapred-site.xml
<!--配置MR程序运行的框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
**5:yarn-site.xml**
<!--配置Yarn的节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata124</value>
</property>
<!--NodeManager执行MR任务的方式是Shuffle洗牌-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
**6:slaves(和自己的从节点机器名字一致)**
bigdata122
bigdata123
** 7:通过HDFS namenode 格式化**
hdfs namenode -format
成功的标志: Storage directory /opt/moudle/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.
**8:通过scp拷贝**
scp -r /opt/moudle/hadoop-2.7.3/ root@bigdata122:/opt/moudle/
scp -r /opt/moudle/hadoop-2.7.3/ root@bigdata123:/opt/moudle/
** 最后启动,通过start-all.sh启动**
验证(5个):5314 SecondaryNameNode
5586 NodeManager
5476 ResourceManager
5126 DataNode
5022 NameNode
web访问:http://10.1.255.124:8088 yarn
http://10.1.255.124:50070 HDFS
学会看 vi /opt/moudle/hadoop-2.7.3/logs/hadoop-root-datanode-bigdata123.log Shift+G 看启动日志。
HDFS体系架构(Yarn资源放在后面)
6、HDFS-NameNode:名称节点
(1)职责:对HDFS的节点进行管理,管理员
接收客户端(命令行、java)的请求:创建目录、上传数据、下载数据和删除数据。
管理和维护HDFS的日志和元信息
(2)dfs/name:
a、current:主要存放日志和元信息 存贮路径:/opt/moudle/hadoop-2.7.3/tmp/dfs/name/current
edits文件:二进制文件,体现了HDFS的最新状态
hdfs oev -i edits_inprogress_0000000000000000003 -o ~/a.xml
o:表示 offline
inprogress:表示最新的。
<?xml version="1.0" encoding="UTF-8"?>
<EDITS>
<EDITS_VERSION>-63</EDITS_VERSION>
<RECORD>
<OPCODE>OP_START_LOG_SEGMENT</OPCODE>
<DATA>
<TXID>3</TXID>
</DATA>
</RECORD>
<RECORD>
<OPCODE>OP_MKDIR</OPCODE>
<DATA>
<TXID>4</TXID>
<LENGTH>0</LENGTH>
<INODEID>16386</INODEID>
<PATH>/input</PATH>
<TIMESTAMP>1547129194216</TIMESTAMP>
<PERMISSION_STATUS>
<USERNAME>root</USERNAME>
<GROUPNAME>supergroup</GROUPNAME>
<MODE>493</MODE>
</PERMISSION_STATUS>
</DATA>
</RECORD>
</EDITS>
b、元信息文件 fsimage:记录的数据块的位置信息和数据块冗余信息,没有体现HDFS的最新状态,二进制文件
hdfs oiv -i fsimage_0000000000000000002 -o ~/b.xml -p XML
(2)in_use.lock 避免同一文件被多使用,只能启动一个namenode
7、HDFS-DataNode:数据节点
(1)主要用来进行数据的存储。
1.x 64M
2.x 128M( hdfs-site.xml 可以修改 blocksize)
(2)数据块的表现形式就是一个个的blk文件
位置:/opt/moudle/hadoop-2.7.3/tmp/dfs/data/current/BP-### *933765109-10.1.255.124-1546784436341* ###/current/finalized/subdir0/subdir0
尝试上传一个 大于128M的文件(128*1024*1024)
Hadoop 3.x 有 纠删码技术,节约存储空间。
8、HDFS-SecondaryNameNode:第二名称节点
(1)进行日志信息的合并,根据checkpoint或者时间间隔(3600s)或者edits文件达到64M。
(2)edits文件合并到fsimage里面 edits文件可以清空