Hyper-v虚拟机Hadoop集群搭建

大数据

Hadoop简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。(海量数据存储)

HDFS为海量的数据提供了存储,而MapReduce**分布式计算**则为海量的数据提供了计算

总结:用Java开发

  1. HDFS–解决大数据存储问题
  2. MapReduce–解决大数据计算问题

HDFS 全称 Hadoop Distributed File System 中文 Hadoop分布式文件系统。

作用:解决海量数据存储问题

​ 突破单体服务器的存储能力。

HDFS架构分析

# 核心概念1

1. `DataNode`:Slave节点,专门用来存储数据块(Block)的廉价服务器。
	1. 管理存储数据文件切分后的block(128MB),存放硬盘上。廉价机器。
	2. 从机(slave),定期向namenode发送心跳(3s),告知datanode(ip 磁盘容量)
	3. 接收数据datablock上传下载的客户端请求。
2. `NameNode`:Master节点,管理从节点,并接受客户端访问
	主节点  master
     1. 基于内存存储管理hdfs中文件的元数据(文件描述信息)---保存内存中
         (文件名 路径 大小 时间 权限 用户 组 )
     2. 管理hdfs集群中所有的datanode信息
               dn1 192.168.199.11 硬盘空间(数据存储负载均衡)
               [文件名1-blk1 路径 大小  时间]
               dn2 192.168.199.12 硬盘空间
               dn3 192.168.199.13 硬盘空间
               目的:掌握datanode健康状况,了解磁盘容量,数据分布的负载均衡。
      				均衡使用datanode的磁盘空间。
     				集合多个datanode服务器的网络带宽,提高数据传输速度。
     3. 管理dn中block的checksum。
     		NameNode存储了文件拆分后的block分布信息:
   			block0--[ip1,ip2]--起始位置--大小--checksum
  			block1--所在dn的ip--起始位置--大小--checksum
     4. 接受客户端的访问。
3. `Block`:文件切分后的数据块
		大小默认128MB
     	原因:现有服务器机房局域网网络带宽千兆带宽==125MB/s
     	说明:block过大:导致单个block网络传输速度过慢,无法利用多个datanode网络传输的带宽。
     		 block过小:block个数过多,导致namenode内存过度占用,导致不足。
4. `Client`:
	java或者命令行工具,用来访问HDFS中的数据的。
# 重要概念2

1. `replication` 副本
	 每个block在hdfs的datanode会存储多份。默认replication=3,每个block有3份。
     原因:防止单体datanode宕机损坏导致数据丢失。
     实战参数:一般block的replication就是3个。
2. `checksum` 校验和,类似指纹数字签名。
    作用:datanode定期向namenode汇报文件的checksum,由namenode判断文件是否完整。

搭建HDFS单体架构

软件准备

Hadoop: http://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz

官网:http://hadoop.apache.org/docs/r2.9.2/

安装步骤

1.准备虚拟机


  1. 设置hostname
  	hostnamectl set-hostname hadoop10
  2. 配置hosts(linux+windows)----域名映射
    vim /etc/hosts
    ----------以下是文件信息------------
    192.168.199.8 hadoop10
  3. 关闭防火墙
  	systemctl stop firewalld
  	systemctl disable firewalld ----禁止防火墙启动
  4. 安装jdk1.8。
  	[root@hadoop10 modules]# tar zxvf jdk-8u221-linux-x64.tar.gzc -C /opt/installs/
    [root@hadoop10 installs]# mv jdk1.8.0_171/ jdk1.8       -----改名
  5. 配置jdk环境变量。
  	 [root@hadoop10 installs]# vim /etc/profile
       # JAVA
      # JAVA_HOME
      export JAVA_HOME=/opt/installs/jdk1.8/
      # PATH
      export PATH=$PATH:/opt/installs/jdk1.8/bin/
      # CLASSPATH
      export classpath=.
      
      	加载配置:source /etc/profile
   		验证 :java -version
[root@hadoop10 installs]# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

2. 安装hadoop

1.解压
	[root@hadoop10 module]# tar zxvf hadoop-2.9.2.tar.gz -C /opt/install/
	[root@hadoop10 installs]# mv hadoop-2.9.2/ hadoop2.9.2
2.配置环境变量
	vim /etc/profile
	-------------以下是环境变量-------------
	# 配置HADOOP_HOME
	export HADOOP_HOME=/opt/installs/hadoop2.8.3
	# 配置PATH
	export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3.生效配置信息(重新执行profile中的指令,加载配置信息)
	source /etc/profile

3. 初始化配置文件

--文件路径  /opt/installs/hadoop2.9.2/etc/hadoop/
   hadoop-env.sh
   core-site.xml
   hdfs-site.xml
   slaves
# 1:hadoop-env.sh
    # jdk安装目录
    export JAVA_HOME=/opt/installs/jdk1.8
# 2:core-site.xml
	# 配置hdfs入口
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://hadoop10:9000</value>
	</property>
	# 配置 数据保存位置(在hadoop目录下新建data目录)
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/installs/hadoop2.9.2/data</value>
	</property>
# 3:hdfs-site.xml
	# 配置副本个数
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
# 4:slaves
  	# 配置从机datanode的ip
  	  hadoop10
  	  hadoop11
  	  hadoop12

HDFS完全分布式集群搭建

Hyper-v虚拟机克隆

克隆两个虚拟机,克隆前需要关闭虚拟机。

  1. 导出

    # 选中虚拟机
    # 导出
    # 选择文件夹
    
  2. 导入

    # 选中虚拟机右键
    # 导入
    	选择导出时的文件夹
    # 新建文件夹放入虚拟磁盘
    
  3. 修改IP和hostname

    # 修改IP
    vim /etc/sysconfig/network-scripts/ifcfg-ens
    # 修改hostname
    # 查看主机名
    hostname
    [当前用户@主机名 ~]#
    # 设置主机名
    hostnamectl set-hostname 主机名
    
    
  4. 重启网卡

    systemctl restart network
    

免密登录

开启多窗口命令同时执行

#  免密登录(在NameNode节点)
1. 生成秘钥   ssh-keygen 直接回车
[root@hadoop11 hadoop]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:4nlM7ptcpn0vzIINjFPw0+Bw0rrAScFc3PHOpkuWl8c root@hadoop11
The key's randomart image is:
+---[RSA 2048]----+
|   o.+.o..       |
|    + = =.       |
|   o . O o.      |
|    + . =o.      |
|     ..=S.+      |
|     .+*o+ o     |
|      o.O+=oE    |
|       *.Oo.=    |
|        B..o o.  |
+----[SHA256]-----+

2. 发送公钥到集群所有节点 hadoop11 hadoop12 hadoop13
[root@hadoop11 hadoop]# ssh-copy-id hadoop11
[root@hadoop11 hadoop]# ssh-copy-id hadoop12
[root@hadoop11 hadoop]# ssh-copy-id hadoop13
3. 验证免密登录效果
ssh root@hadoop13
# 免密登录设置
    0:ip hostname hosts的设置要在免密登录设置之前。
	1. 生成一对秘钥(私钥+公钥)
		ssh-keygen
	2. 将公钥拷贝到被免密登录的机器上。
		ssh-copy-id root@ip
   3. 将 hosts 文件保持三台服务器一致

启动集群

#   初始化HDFS
	1. 删除hadoop的data文件夹
	2. 格式化集群
	   在namenode节点执行格式化。
	   hdfs namenode -format
# start-x启动的原理。
start-dfs.sh和stop-dfs.sh
  会`远程登录`到NN和DN对应的节点执行hadoop-deamon.sh start namenode 或者hadoop-deamon.sh start datanode命令启动对应节点的服务。

#  启动hadoop集群
	1. 在namenode节点,执行start-dfs.sh
# 启动hdfs
start-dfs.sh
# 关闭hdfs
stop-dfs.sh
#  测试验证
# 查看hdfs进程
[root@hadoop10 install]# jps
2225 NameNode  # master namenode主机
4245 Jps
2509 SecondaryNameNode 
2350 DataNode	# slave datanode从机
# 查看hdfsWeb服务
1. 查看namenode的web服务
	http://hadoop10:50070
2. 查看datanode的Web服务
	http://hadoop10:50075

补充

#日志监控
`	#namenode启动日志`
		hadoop-用户名-namenode-主机名.log
`	#datanode启动日志`
		hadoop-用户名-datanode-主机名.log
#搭建故障处理
# 查找问题
	# 查看hdfs启动执行日志。
	# namenode启动日志
	tail -f /opt/installs/hadoop2.9.2/logs/hadoop-用户名-namenode-主机hostname.log
	# datanode启动日志
	tail -f /opt/installs/hadoop2.9.2/logs/hadoop-用户名-datanode-主机hostname.log

# 解决问题
	1. 关闭启动的hdfs程序(NN DN)。
	2. 修改错误的配置文件。
	3. 重新格式化hdfs集群。
		① 删除data文件夹下的所有内容。
		② 重新执行namenode的格式化
			hdfs namenode -format

知识补充

# 启动失败如何处理
  场景: 格式化或者启动hadoop失败。
  说明:
  		hadoop/data文件夹
  		作用: 保存datanode和namenode持久化的数据。
  		时机:
  			1. 格式化hdfs namenode -format 会初始化该目录下的文件。
  			2. hdfs运行期间产生的数据,会操作该目录中的数据。
  必要操作:删除格式化或者启动数据保存的文件目录。
# web界面
   NameNode的web管理器地址:http://ip:50070.
# 启动过程日志监控(查看错误)
# 监控namenode启动日志
	/hadoop2.9.2/logs/hadoop-用户名-namenode-主机名.log
# 监控datanode启动日志
    /hadoop2.9.2/logs/hadoop-用户名-datanode-主机名.log
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值