Hadoop 从入门到精通----leo学习编程不良人视频的笔记--part01

编程不良人原版笔记 — https://blog.csdn.net/wei198621/article/details/111280555
part 01 hadoop 集群的搭建 – https://blog.csdn.net/wei198621/article/details/111167560
part 02 mapreduce 的学习 – https://blog.csdn.net/wei198621/article/details/111411463

相关笔记下载地址 ( 很少的费用 带来很多的收获 支持一下自己技术上的进步 支持一下陈兄 )
https://www.baizhiedu.xin/front/index#/main

Hadoop 从入门到精通----编程不良人 ( 25 小时 )
https://www.bilibili.com/video/BV17E411g7F2

java hdfs 操作hdfs库
https://github.com/wei198621/hdfs_by_baizhi

简介

hadoop 官网
http://hadoop.apache.org/

文档下载地址
https://hadoop.apache.org/docs/r2.10.1/
https://hadoop.apache.org/docs/r2.9.2/

配置项下载地址
core-site.xml
https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-common/core-default.xml

hdfs-site.xml
https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

Hadoop 常用命令

hdfs 常用命令汇总


0. 
0.1  查看所有hadoop指令 
hdfs dfs 
0.2  查看帮助文档 
hdfs dfs -help **    
hdfs dfs -help mkdir


1. hdfs dfs -ls /xxx   查看指定文件夹下的文件

2.hdfs dfs -put /xxx /xxx上传本地文件到hdfs
[root@hadoop5 tmpfile]# touch bb.txt
[root@hadoop5 tmpfile]# echo "1234567890" >> bb.txt
[root@hadoop5 tmpfile]# hdfs dfs -put bb.txt /
[root@hadoop5 tmpfile]# hdfs dfs -ls /

3.hdfs dfs -cat /xxx/part-r-00000  查看hdfs文件
[root@hadoop5 tmpfile]# hdfs dfs -cat /bb.txt
1234567890

4. hdfs dfs -mkdir /xxx  创建文件夹
[root@hadoop5 tmpfile]# hdfs dfs -mkdir /dir02
[root@hadoop5 tmpfile]# hdfs dfs -ls /
-rw-r--r--   3 root supergroup         11 2020-12-18 15:26 /bb.txt
drwxr-xr-x   - root supergroup          0 2020-12-18 15:27 /dir02
.... 创建多级目录 -p 参数 
[root@hadoop5 tmpfile]# hdfs dfs -mkdir -p /dir01/dir0101

5.  hdfs dfs -rm -r /dir01   删除文件()
[root@hadoop5 tmpfile]# hdfs dfs -rm -r /dir01


6. hadoop fs -du -s -h  /xxx  查看某文件夹所占磁盘大小 
[root@hadoop5 tmpfile]# hadoop fs -du -s -h /
28  /


7. hdfs dfsadmin -report  查看集群节点分配内存大小


hdfs dfsadmin -report 示例展示

[root@hadoop5 tmpfile]# hdfs dfsadmin -report
Configured Capacity: 41901096960 (39.02 GB)
Present Capacity: 12390113280 (11.54 GB)
DFS Remaining: 12390031360 (11.54 GB)
DFS Used: 81920 (80 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Pending deletion blocks: 0

-------------------------------------------------
Live datanodes (4):

Name: 192.168.213.205:50010 (hadoop5)
Hostname: hadoop5
Decommission Status : Normal
Configured Capacity: 10475274240 (9.76 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 6672506880 (6.21 GB)
DFS Remaining: 3802742784 (3.54 GB)
DFS Used%: 0.00%
DFS Remaining%: 36.30%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Fri Dec 18 15:39:48 CST 2020
Last Block Report: Fri Dec 18 15:29:06 CST 2020


Name: 192.168.213.206:50010 (hadoop6)
Hostname: hadoop6
Decommission Status : Normal
Configured Capacity: 10475274240 (9.76 GB)
DFS Used: 16384 (16 KB)
Non DFS Used: 7619432448 (7.10 GB)
DFS Remaining: 2855825408 (2.66 GB)
DFS Used%: 0.00%
DFS Remaining%: 27.26%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Fri Dec 18 15:39:50 CST 2020
Last Block Report: Fri Dec 18 14:47:45 CST 2020


Name: 192.168.213.207:50010 (hadoop7)
Hostname: hadoop7
Decommission Status : Normal
Configured Capacity: 10475274240 (9.76 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 7618867200 (7.10 GB)
DFS Remaining: 2856382464 (2.66 GB)
DFS Used%: 0.00%
DFS Remaining%: 27.27%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Fri Dec 18 15:39:49 CST 2020
Last Block Report: Fri Dec 18 14:45:11 CST 2020


Name: 192.168.213.208:50010 (hadoop8)
Hostname: hadoop8
Decommission Status : Normal
Configured Capacity: 10475274240 (9.76 GB)
DFS Used: 16384 (16 KB)
Non DFS Used: 7600177152 (7.08 GB)
DFS Remaining: 2875080704 (2.68 GB)
DFS Used%: 0.00%
DFS Remaining%: 27.45%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Fri Dec 18 15:39:50 CST 2020
Last Block Report: Fri Dec 18 14:17:20 CST 2020

Hadoop Shell命令 中文手册

hdfs dfs常用命令 博客
https://blog.csdn.net/hbin_csdn/article/details/102855404

Hadoop Shell命令 中文手册 (1.0.4 版本 )
http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html

在这里插入图片描述

hadoop的单机安装

简介

学习地址
https://www.bilibili.com/video/BV17E411g7F2?p=3

在这里插入图片描述在这里插入图片描述
配置到了第六步 (20201216)

1 克隆一台主机命名hadoop1

(之前主机就是静态地址,最好)
在这里插入图片描述

2. 修改ip

vim /etc/sysconfig/network-scripts/ifcfg-ens33

ip : 192.168.121.201
在这里插入图片描述systemctl restart network
ifconfig
在这里插入图片描述ip a 看到地址已经变为 201
在这里插入图片描述

3. 修改 hostname , hosts 的映射 重启

hostname 查看主机名 当前为 localhost.localdomain
vim /etc/hostname 修改主机名为 hadoop1
vim /etc/hosts 192.168.121.201 hadoop1
reboot 重启

在这里插入图片描述
在这里插入图片描述su root 以后的操作尽量用root
hostname 查看host是否修改过来了
ping hadoop1 如果能ping通说明 /etc/hosts 也改好了
在这里插入图片描述java -version
echo $PATH

4. 上传hadoop

SecureCRT 登录 192.168.121.201 hadoop1 这台服务器
alt + p 文件传输
在这里插入图片描述使用版本 hadoop 2.9.2 国内镜像地址
http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.2/
在这里插入图片描述
secureCRT中sftp的使用


securecrt 按下ALT+P就开启新的会话 进行ftp操作。
输入:help命令,显示该FTP提供所有的命令
pwd: 查询linux主机所在目录(也就是远程主机目录)
lpwd: 查询本地目录(一般指windows上传文件的目录:我们可以通过查看”选项“下拉框中的”会话选项“,如图二:我们知道本地上传目录为:D:/我的文档)
ls: 查询连接到当前linux主机所在目录有哪些文件
lls: 查询当前本地上传目录有哪些文件
lcd: 改变本地上传目录的路径
cd: 改变远程上传目录
get: 将远程目录中文件下载到本地目录
put: 将本地目录中文件上传到远程主机(linux)
     put -r "d:\****"
quit: 断开FTP连接

在这里插入图片描述
将本地 d:\downloads 中Hadoop文件的放到 root 目录下
put -r “d:\Downloads\hadoop-2.9.2.tar.gz”
pwd
ls

切换到正常(非sftp状态)模式
tar -zxvf hadoop-2.9.2.tar.gz

查看目录
在这里插入图片描述

5. 上传 jdk1.8

阿里云 jdk-8u251-linux-x64.tar.gz 地址
https://code.aliyun.com/kar/oracle-jdk/raw/3c932f02aa11e79dc39e4a68f5b0483ec1d32abe/jdk-8u251-linux-x64.tar.gz

在这里插入图片描述tar -zxvf 【压缩包文件名.tar.gz】 -C 【路径】/
tar -zxvf
tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/java
在这里插入图片描述

修改 JAVA_HOME

vi /etc/profile

追加如下内容

export JAVA_HOME=/usr/java/jdk1.8.0_251
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar

source /etc/profile
在这里插入图片描述

修改hdfs默认数据位置

step 1: 查看当前hdfs是否运行
jps

step2: 关闭hdfs
stop-dfs.sh
如果没有配置ssh登录,需要输入三次密码

step3: 进入hdfs目录,修改core-site.xml
vim /usr/hadoop-2.9.2/etc/hadoop/core-site.xml

— 增加下面的property

fs.defaultFS hdfs://hadoop1:9000 hadoop.tmp.dir /usr/hadoop-2.9.2/data

step4:格式化hdfs
hdfs namenode -format (仅仅是第一次使用需要格式化)

在这里插入图片描述

step5: 启动 hdfs
start-dfs.sh

step6 : 查看是否正常启动hdfs
[root@hadoop1 ~]# jps
19201 DataNode
19378 SecondaryNameNode
19060 NameNode
19493 Jps
[root@hadoop1 ~]#

配置SSH免密登录hadoop


1. 生成ssh秘钥对
ssh-keygen -t rsa 然后回车几次就可以啦

2. 查看秘钥对生成位置
ls /root/.ssh 会发现在home目录中生成了两个文件
	id_rsa(私钥)  id_rsa.pub(公钥)

3. 将公钥加入另一台机器的受信列表中
ssh-copy-id hadoop(主机名) 
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys (和上面命令一样,备用方法)

4. 再次查看/root/.ssh 目录 多出两个文件其中authorized_keys就是存放公钥列表文件
authorized_keys  id_rsa  id_rsa.pub  known_hosts

5. 检测是否配置成功
	ssh hadoop  不需要输入密码即可

在这里插入图片描述
以后再启动及关闭测试机器的hadoop就不需要每次都输入三次密码了

jps           查看 
start-dfs.sh  启动
stop-dfs.sh   关闭

java 操作 Hdfs

  1. 配置文件
  <properties>
        <hadoop.version>2.9.2</hadoop.version>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <!--<scope>test</scope>-->
        </dependency>
    </dependencies>
  1. java 代码

在这里插入图片描述

 @Test
    public void test() throws IOException {
        //hadoop文件系统的权限设置为root  ,不设置,使用默认的登录用户
        System.setProperty("HADOOP_USER_NAME","root");
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS","hdfs://192.168.213.201:9000");
        conf.set("dfs.replication","1");
        FileSystem fileSystem = FileSystem.get(conf);
        //  上传本地文件到 hadoop 服务器
        FileInputStream is = new FileInputStream("E:\\tempData\\20201217.txt");
        Path path = new Path("/now01.txt");
        FSDataOutputStream os = fileSystem.create(path);
        IOUtils.copyBytes(is,os,1024,true);
        //
        fileSystem.close();
    }

http://192.168.213.201:50070/explorer.html#/

// A code block
var foo = 'bar';

在这里插入图片描述

HDFS HA 集群搭建

(20201217)


10.15.0.5
10.15.0.6
10.15.0.7
10.15.0.8

1.  修改ip 
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=10.15.0.5

2.  修改主机名 
vim  /etc/hostname
hadoop5   

3. 修改映射  (命令模式yyp 复制黏贴一行)
vim  /etc/hosts 
10.15.0.5   hadoop5 
10.15.0.6   hadoop6 
10.15.0.7   hadoop7 
10.15.0.8   hadoop8

4. 重启 
reboot 

5.  6,7,8  上面重复操作,然后就可以通过crt工具操作了

6.配置免密登录 

想在 5  上面操作  ,6,7,8 
hadoop5   ssh-keygen -t rsa  -- 5上面生成秘钥 
ssh-copy-id hadoop5         --  将秘钥 copy 到 5,6,7,8  
ssh-copy-id hadoop6
ssh-copy-id hadoop7
ssh-copy-id hadoop8

确认免密登录是否生效 
ssh hadoop5
ssh hadoop6  
ssh hadoop7
ssh hadoop8

7. 配置Hadoop集群 
在5上面操作完成后同步到6,7,8 

将 root 目录下的所有Hadoop2.9.2文件夹删除,保留之前的 hadoop2.9.2.tar.gz文件夹
tar -zxvf hadoop-2.9.2.tar.gz 

hadoop5 上面配置环境变量

echo $JAVA_HOME 

vim /root/hadoop-2.9.2/etc/hadoop/hadoop-env.sh    java_home 
vim /root/hadoop-2.9.2/etc/hadoop/core-site.xml    入口 1. fs.defaultFS   hdfs://hadoop5:9000 
                                 2  hadoop.tmp.dir    /root/hadoop-2.9.2/data  
   <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop5:9000</value>
  </property>
  <property>
   <name>hadoop.tmp.dir</name>
   <value>/root/hadoop-2.9.2/data</value>
  </property>
vim /root/hadoop-2.9.2/etc/hadoop/hdfs-site.xml      省略。。。 
vim /root/hadoop-2.9.2/etc/hadoop/slaves           
hadoop5 
hadoop6 
hadoop7 
hadoop8

同步集群配置  
将5上面配置好的 hadoop-2.9.2文件夹同步到 6,7,8 上面  
scp -r 文件|目录名  root@hadoop6:/root/     
   scp -r /root/hadoop-2.9.2 root@hadoop6:/root/
   scp -r /root/hadoop-2.9.2 root@hadoop7:/root/
   scp -r /root/hadoop-2.9.2 root@hadoop8:/root/ 


8.  5,6,7,8  重新加载 /etc/profile 
source /etc/profile  


9. hadoop5  启动集群
    在nodeNode的节点上执行格式化  
   hdfs  namenode -format 
   start-dfs.sh 
   jps 
   <--
   如果没有执行  hdfs  namenode -format   ,jps 会发现  NameNode  没有启动 
   需要在5 执行      
   stop-dfs.sh    
   5.6.7.8 都执行下面的删除
   rm -rf  /root/hadoop-2.9.2/data  
   5 执行 
   start-dfs.sh  
   -->
   
   
   
   
10 访问测试


http://192.168.121.205:50070
http://hadoop5:50070

[root@hadoop5 ~]# jps
10673 SecondaryNameNode
10420 DataNode
10906 Jps
10237 NameNode
[root@hadoop5 ~]# hdfs dfs -ls /
[root@hadoop5 ~]# hdfs dfs -put /etc/profile /profile.txt
[root@hadoop5 ~]# hdfs dfs -ls /
Found 1 items
-rw-r--r--   3 root supergroup       2034 2020-12-18 06:52 /profile.txt
[root@hadoop5 ~]# 

六.HDFS完全分布式(简单版)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

七.ZK搭建高可用HDFS集群

7.1 原理解析

在这里插入图片描述
QJM(Quorum Journal Manager)是Hadoop专门为Namenode共享存储开发的组件。其集群运行一组Journal Node,每个Journal 节点暴露一个简单的RPC接口,允许Namenode读取和写入数据,数据存放在Journal节点的本地磁盘。当Namenode写入edit log时,它向集群的所有Journal Node发送写入请求,当多数节点回复确认成功写入之后,edit log就认为是成功写入。例如有3个Journal Node,Namenode如果收到来自2个节点的确认消息,则认为写入成功。

而在故障自动转移的处理上,引入了监控Namenode状态的ZookeeperFailController(ZKFC)。ZKFC一般运行在Namenode的宿主机器上,与Zookeeper集群协作完成故障的自动转移。整个集群架构图如下
在这里插入图片描述在这里插入图片描述

7.2 搭建HDFS高可用集群 01 配置ZK

# 0.集群规划 和 环境准备
	 zk1       192.168.121.111 ---	 
	 zk2       192.168.121.112 ---
	 zk3       192.168.121.113 ---
	 hadoop12   192.168.121.212  --- datanode  & journalnode & namenode(active)  & DFSZKFailoverController(zkfc)
	 hadoop13   192.168.121.213  --- datanode  & journalnode & namenode(standby) & DFSZKFailoverController(zkfc)
	 hadoop14   192.168.121.214	---  datanode  & journalnode
	 
	 环境准备: centos7.x 必须安装: yum install psmisc -y
	 1.修改Linux主机名
	 2.修改IP
	 3.修改主机名和IP的映射关系 /etc/hosts
	 4.关闭防火墙
	 5.ssh免登陆
	 6.安装JDK,配置环境变量等 省略

1.修改Linux主机名
在这里插入图片描述
2.修改IP 六台都要修改

[leo@hadoop5 ~]$ su root   。。。。
[root@hadoop5 network-scripts]# ifconfig
[root@hadoop5 network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@hadoop5 network-scripts]# systemctl restart network
[root@hadoop5 network-scripts]# ifconfig

在这里插入图片描述

3.修改主机名和IP的映射关系 /etc/hosts

[root@zk1 ~]# scp /etc/hosts root@hadoop14:/etc/hosts

4.关闭防火墙 。。。

5.ssh免登陆
zk1 zk2 zk3 不要做免密登录
Hadoop12 ,Hadoop13,Hadoop14 需要做免密配置
克隆的镜像,不用做

[root@zk1 .ssh]# ll /root/.ssh/
total 24
-rw-------. 1 root root  788 Dec 18 06:19 authorized_keys
-rw-------. 1 root root 1679 Dec 18 06:18 id_rsa
-rw-r--r--. 1 root root  394 Dec 18 06:18 id_rsa.pub
-rw-r--r--. 1 root root 2014 Dec 18 20:00 known_hosts
-rw-------. 1 root root 1679 Dec 16 06:18 y
-rw-r--r--. 1 root root  394 Dec 16 06:18 y.pub

6.安装JDK,配置环境变量等 省略

[root@zk1 ~]# echo $PATH

[root@zk1 ~]# vim /etc/profile

安装zk


1.  安装zk
      secureCRT   alt+ p  进入到上传页面 (本机不可执行)
      put -r "D:\files\OtherCode\编程不良人\编程不良人hadoop全套资料\hadoop全套资料\资料\zookeeper-3.4.12.tar.gz"  -- 中文路径不可以执行 
      put -r "D:\temp\zookeeper-3.4.12.tar.gz"       -- OK  
2. [root@zk1 ~]# tar -zxvf /root/zookeeper-3.4.12.tar.gz  
3. [root@zk1 ~]# mkdir /root/zkdata      ---zk1  zk2  zk3 都要执行 

在这里插入图片描述

4.   创建zookeeper的表示文件myid  内容 分别为 1,2,3 
    [root@zk1 ~]# echo "1" >> /root/zkdata/myid   ---- 1,2,3  三个都要执行   myid 内容分别为   1,2,3  
    [root@zk1 ~]# vim /root/zkdata/myid 
    1 
5.  创建zookeeper 配置文件  具体内容下一步放入并解释 
    [root@zk1 ~]# touch /root/zkdata/zoo.cfg   -- zoo.cfg ,zoo 是编程不良人老师自己起的 可以是任意值  
    [root@zk1 ~]# ll /root/zkdata/
    total 4
    -rw-r--r--. 1 root root 2 Dec 18 21:45 myid
    -rw-r--r--. 1 root root 0 Dec 18 21:49 zoo.cfg   

在这里插入图片描述

[root@zk1 ~]# vim /root/zkdata/zoo.cfg 
				
						
# zk1 配置 					
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkdata
clientPort=3001            -- 3001 zk与客户端通讯端口,
server.1=zk1:3002:3003      --- 3002  zk内部广播端口,3003 zk容错选举端口 
server.2=zk2:4002:4003
server.3=zk3:5002:5003		
						
						
# zk2 配置 					
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkdata
clientPort=4001             -- 4001 因为是多台机器, 3001 也可以,自行体会 
server.1=zk1:3002:3003
server.2=zk2:4002:4003
server.3=zk3:5002:5003		
						
						
# zk3 配置 					
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkdata
clientPort=5001
server.1=zk1:3002:3003
server.2=zk2:4002:4003
server.3=zk3:5002:5003						
						


# 7.启动zk节点
[root@zk2 ~]# cd /root/zookeeper-3.4.12/bin
[root@zk2 bin]# ./zkServer.sh start /root/zkdata/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /root/zkdata/zoo.cfg
Starting zookeeper ... STARTED
[root@zk2 bin]#  ./zkServer.sh status /root/zkdata/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /root/zkdata/zoo.cfg
Mode: leader        ------------leader  follower 
[root@zk2 bin]# jps
80358 Jps
79547 QuorumPeerMain



----jps 查看进程
--- (进入zookeeper/bin目录) ./zkServer.sh status /root/zkdata/zoo.cfg   -- 查看启动状态


7.2 搭建HDFS高可用集群 02 配置hadoop及联调

# 0.集群规划 和 环境准备
	 zk1       192.168.121.111 ---	 
	 zk2       192.168.121.112 ---
	 zk3       192.168.121.113 ---
	 hadoop12   192.168.121.212  --- datanode  & journalnode & namenode(active)  & DFSZKFailoverController(zkfc)
	 hadoop13   192.168.121.213  --- datanode  & journalnode & namenode(standby) & DFSZKFailoverController(zkfc)
	 hadoop14   192.168.121.214	---  datanode  & journalnode

hdfs ha 搭建步骤
1.  主机名 和 IP 映射   --- vim /etc/hosts  vim /etc/hostname   
2. 配置环境变量       ---  vim /etc/profile
3. 配置ssH 免密登录
      12 上面  ssh-keygen -t rsa         --- 生成key             ssh  hadoop12 测试登录 需要输入密码 
               ssh-copy-id hadoop12     ---- copy key  到 本地  ssh  hadoop12 测试登录  无需输入密码  
               ssh-copy-id hadoop13    ---- 同上测试 
               ssh-copy-id hadoop14  ---- 同上测试 

4. 安装依赖 yum install psmisc -y      -- 12 13  14  
       psmisc  组件用于 :  journal node 节点 在前一个active namenode 出错时候 ,登录此namenode ,将其kill掉  
5. 12 13 14  中安装 hadoop 
     
   5.1 12上面 alt + p   
            put -r "D:\temp\hadoop-2.9.2.tar.gz" 
   5.2  12上面
      scp /root/hadoop-2.9.2.tar.gz root@hadoop13:/root 
      scp /root/hadoop-2.9.2.tar.gz root@hadoop14:/root 
6. 配置环境变量   vim /etc/profile      source /etc/profile    echo $PATH 
7.修改Hadoop 中4个配置文件的配置  
     hadoop-env.sh
     core-site.xml
     hdfs-site.xml
     slaves 
     从12 同步以上4个文件到相应   13  14  
     scp -r /hadoop-2.9.2/etc/hadoop  root@hadoop13:/root/hadoop-2.9.2/etc/
8.  启动集群
    8.1   hdfs zkfs -formatZK  
    8.2   hadoop-daemon.sh start journalnode    ----3 
    8.3   hdfs namenode -format ns 
    8.4  start-dfs.sh
    8.5  hdfs namenode -bootstrapStandby   -------
    8.6  hadoop-daemon.sh start namenode 

9.  测试
    hadoop12:50070
    hadoop13:50070
7.修改Hadoop 中4个配置文件的配置  
     7.1   vim /root/hadoop-2.9.2/etc/hadoop/hadoop-env.sh    --配置环境变量 echo $JAVA_HOME 
     7.2   vim /root/hadoop-2.9.2/etc/hadoop/core-site.xml  

               <!--hdfs主要入口不再是一个具体机器而是一个虚拟的名称 -->
               <property>
                 <name>fs.defaultFS</name>
                 <value>hdfs://ns</value>
               </property>
               <property>
                 <name>hadoop.tmp.dir</name>
                 <value>/root/hadoop-2.9.2/data</value>
               </property>
               <property>
                 <name>ha.zookeeper.quorum</name>
                 <value>zk1:3001,zk2:4001,zk3:5001</value>   
               </property>

     7.3   vim /root/hadoop-2.9.2/etc/hadoop/hdfs-site.xml
 JournalNode 默认端口号 8485 
<configuration>
         <!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->
          <property>
                  <name>dfs.nameservices</name>
                  <value>ns</value>
          </property>
          <!-- ns下面有两个NameNode,分别是nn1,nn2 -->
          <property>
                  <name>dfs.ha.namenodes.ns</name>
                  <value>nn1,nn2</value>
          </property>
          <!-- nn1的RPC通信地址 -->
          <property>
                  <name>dfs.namenode.rpc-address.ns.nn1</name>
                  <value>hadoop12:9000</value>
          </property>
          <!-- nn1的http通信地址 -->
          <property>
                  <name>dfs.namenode.http-address.ns.nn1</name>
                  <value>hadoop12:50070</value>
          </property>
          <!-- nn2的RPC通信地址 -->
          <property>
                  <name>dfs.namenode.rpc-address.ns.nn2</name>
                  <value>hadoop13:9000</value>
          </property>
          <!-- nn2的http通信地址 -->
          <property>
                  <name>dfs.namenode.http-address.ns.nn2</name>
                  <value>hadoop13:50070</value>
          </property>



          <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
          <property>
                <name>dfs.namenode.shared.edits.dir</name>
                  <name>dfs.namenode.http-address.ns.nn1</name>
                  <value>hadoop12:50070</value>
          </property>
          <!-- nn2的RPC通信地址 -->
          <property>
                  <name>dfs.namenode.rpc-address.ns.nn2</name>
                  <value>hadoop13:9000</value>
          </property>
          <!-- nn2的http通信地址 -->
          <property>
                  <name>dfs.namenode.http-address.ns.nn2</name>
                  <value>hadoop13:50070</value>
          </property>



          <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
          <property>
                <name>dfs.namenode.shared.edits.dir</name>
                <value>qjournal://hadoop12:8485;hadoop13:8485;hadoop14:8485/ns</value>
          </property>
          <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
          <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/root/journal</value>
          </property>
          
          
          
          
          <!-- 开启NameNode故障时自动切换 -->
          <property>
                <name>dfs.ha.automatic-failover.enabled</name>
                <value>true</value>
          </property>
          <!-- 配置失败自动切换实现方式 -->
          <property>
                <name>dfs.client.failover.proxy.provider.ns</name>
                <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
          </property>
          <!-- 配置隔离机制,如果ssh是默认22端口,value直接写sshfence即可 -->
          <property>
                <name>dfs.ha.fencing.methods</name>
                <value>sshfence</value>
          </property>
          <!-- 使用隔离机制时需要ssh免登陆 -->
          <property>
                <name>dfs.ha.fencing.ssh.private-key-files</name>
                <value>/root/.ssh/id_rsa</value>
          </property>



</configuration>

    7.4    vim /root/hadoop-2.9.2/etc/hadoop/slaves 
                  hadoop12
                  hadoop13
                  hadoop14

    7.4  同步集群配置  从12 同步以上4个文件到相应   13  14  
     scp -r /root/hadoop-2.9.2/etc/hadoop  root@hadoop13:/root/hadoop-2.9.2/etc/
[root@hadoop12 hadoop]# scp -r /root/hadoop-2.9.2/etc/hadoop/ root@hadoop13:/root/hadoop-2.9.2/etc     --- 进入 13 目录 查看 core-site.xml等文件是否修改 
[root@hadoop12 hadoop]# scp -r /root/hadoop-2.9.2/etc/hadoop/ root@hadoop14:/root/hadoop-2.9.2/etc

8.  启动集群
    8.1   hdfs zkfc -formatZK    ---- 在 namenode节点的 12 或者 13 任意一台机器上面,执行如下格式化语句,进行格式化 zk (示例选用 12 )
    -----倒数6行提示   Successfully created /hadoop-ha/ns in ZK.   表示成功 在zk 上面创建 hadoop-ha/ns 节点 

    8.2  启动 journalnode 节点  (journal node 的作用是同步edits log ,需要在edits log 生成前启动  记录所有日志要先于datanode 启动)
        hadoop-daemon.sh start journalnode    ----12,13,14 上面都要启动
         
         [root@hadoop12 hadoop]# jps
         3757 Jps
         [root@hadoop12 hadoop]# hadoop-daemon.sh start journalnode
         starting journalnode, logging to /root/hadoop-2.9.2/logs/hadoop-root-journalnode-hadoop12.out
         [root@hadoop12 hadoop]# jps      ---- 1.确认是否有journal服务
         4082 JournalNode
         4189 Jps
         [root@hadoop12 journal]# ls /root    --- 2. 确认journal 文件夹是否创建成功 此处生成的目录是 hdfs-site.xml 对journal 的配置 
          hadoop-2.9.2  hadoop-2.9.2.tar.gz  journal
    8.3   在 12 或者 13 中选一台作为active namenode 节点,执行格式化操作  hdfs namenode -format ns   在那台执行,哪台就是active ,另一条是standby ,本示例选择 12 作为 active 节点 。
          [root@hadoop12 journal]# hdfs namenode -format ns
 

在这里插入代码片

在这里插入图片描述

在这里插入代码片

在这里插入图片描述

    8.4  在active namenode 节点12 上面启动Namenode  start-dfs.sh
    
              [root@hadoop12 ns]# start-dfs.sh
              Starting namenodes on [hadoop12 hadoop13]
              hadoop13: starting namenode, logging to /root/hadoop-2.9.2/logs/hadoop-root-namenode-hadoop13.out
              hadoop12: starting namenode, logging to /root/hadoop-2.9.2/logs/hadoop-root-namenode-hadoop12.out
              hadoop12: starting datanode, logging to /root/hadoop-2.9.2/logs/hadoop-root-datanode-hadoop12.out
              hadoop14: starting datanode, logging to /root/hadoop-2.9.2/logs/hadoop-root-datanode-hadoop14.out
              hadoop13: starting datanode, logging to /root/hadoop-2.9.2/logs/hadoop-root-datanode-hadoop13.out
              Starting journal nodes [hadoop12 hadoop13 hadoop14]
              hadoop12: journalnode running as process 33402. Stop it first.
              hadoop13: journalnode running as process 33190. Stop it first.
              hadoop14: journalnode running as process 33546. Stop it first.
              Starting ZK Failover Controllers on NN hosts [hadoop12 hadoop13]
              hadoop13: starting zkfc, logging to /root/hadoop-2.9.2/logs/hadoop-root-zkfc-hadoop13.out
              hadoop12: starting zkfc, logging to /root/hadoop-2.9.2/logs/hadoop-root-zkfc-hadoop12.out

在这里插入图片描述

   8.5  在 standby namenody 节点 213 执行 hdfs namenode -bootstrapStandby   -------

[root@hadoop13 ns]# hdfs namenode -bootstrapStandby 
[root@hadoop13 ns]# jps   
42913 DataNode
47187 Jps
33190 JournalNode
43274 DFSZKFailoverController
[root@hadoop13 ns]# 
  

在这里插入图片描述在这里插入图片描述

 8.6  standby 节点 13 上面执行 如下语句单独启动namenode  hadoop-daemon.sh start namenode 
           [root@hadoop13 ns]# jps
           42913 DataNode
           47187 Jps
           33190 JournalNode
           43274 DFSZKFailoverController
           [root@hadoop13 ns]# hadoop-daemon.sh start namenode
           starting namenode, logging to /root/hadoop-2.9.2/logs/hadoop-root-namenod-hadoop13.out
           [root@hadoop13 ns]# jps
           42913 DataNode
           49315 NameNode
           49475 Jps
           33190 JournalNode
           43274 DFSZKFailoverController
           [root@hadoop13 ns]# 

在这里插入图片描述

9.  测试
http://hadoop12:50070  --- 配置本机host 后,可以用这个地址访问,暂时不可以
http://192.168.121.212:50070

http://hadoop13:50070  --- 配置本机host 后,可以用这个地址访问,暂时不可以
http://192.168.121.213:50070

在这里插入图片描述

[root@hadoop12 ~]# hdfs dfs -put /etc/profile /profile
[root@hadoop12 ~]# hdfs dfs -ls /
Found 1 items
-rw-r--r--   3 root supergroup       2034 2020-12-19 06:14 /profile
[root@hadoop12 ~]# 

在这里插入图片描述
将 212 active 节点宕机后

[root@hadoop12 ~]# jps
43890 DataNode
44420 DFSZKFailoverController
58853 Jps
33402 JournalNode
43722 NameNode
[root@hadoop12 ~]# kill 43722
[root@hadoop12 ~]# jps
59520 Jps
43890 DataNode
44420 DFSZKFailoverController
33402 JournalNode
[root@hadoop12 ~]#

在这里插入图片描述再次将之前宕机的212 namenode 启动
hadoop-daemon.sh start namenode

[root@hadoop12 ~]# jps
59520 Jps
43890 DataNode
44420 DFSZKFailoverController
33402 JournalNode
[root@hadoop12 ~]# hadoop-daemon.sh start namenode
starting namenode, logging to /root/hadoop-2.9.2/logs/hadoop-root-namenode-hadoop12.out
[root@hadoop12 ~]# jps
43890 DataNode
44420 DFSZKFailoverController
33402 JournalNode
60746 Jps
60623 NameNode
[root@hadoop12 ~]# 

在这里插入图片描述
happy ending 20201219

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值