大数据基础之HDFS的安装 -03

搭建完CentOS7系统后,应该安装以下环境,同时配置免密登录,域名映射等,在这里不讲解免密登录和域名映射了,自行学习哈~

1. yum install -y curl.x86_64
2. yum install -y wget.x86_64
3. yum -y install net-tools.x86_64
4. yum -y install bzip2.x86_64
5. yum -y install perl
6. yum -y install zip.x86_64
7. yum -y install unzip.x86_64
8. yum -y  install  psmisc
9. yum -y  install  vim
10. yum -y  install  gcc gcc-c++
11. yum -y  install  ntpdate

本讲中需要用到的资料可参考如下链接
链接:https://pan.baidu.com/s/14XScZb3g39mB_t8oUUnoQQ
提取码:nkid

HDFS是Hadoop 的核心模块之一,是Hadoop分布式文件系统,用于存储大数据集,其中安装模式有三种,如下:

一、本地模式
这种模式没有使用分布式文件系统思想,使用的机器的的本地文件系统,通常用于测试mr程序

  1. 环境需求:JDK1.8+、
  2. Hadoop版本: hadoop-2.7.6.tar.gz
  3. 安装jdk
    3.1 使用远程工具(finalshell)上传、解压并更名
    点击如下
    在这里插入图片描述
    3.2 找到需要的文件,点击确定
    在这里插入图片描述
    3.3 然后就可以使用ll查看是否上传成功
    在这里插入图片描述
    3.4 解压在这里插入代码片
[root@qianfeng01 ~]# tar -zxvf jdk-8u141-linux-x64.tar.gz  -C /usr/local/

在这里插入图片描述

3.5 查看是否解压成功

[root@qianfeng01 ~]# cd /usr/local
[root@qianfeng01 local]# ll

在这里插入图片描述

3.6 更改名字

[root@qianfeng01 local]# mv jdk1.8.0_141/ jdk
[root@qianfeng01 local]# ll

在这里插入图片描述
3.7 配置环境变量

[root@qianfeng01 local]# vim /etc/profile

3.8 向文件中添加如下内容,保存退出即可:

ulimit -n 65535
#java environment
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/sbin:$PATH

在这里插入图片描述
3.9 重新加载,使修改后的文件生效

[root@qianfeng01 local]# source /etc/profile

在这里插入图片描述
3.10 查看java版本

[root@qianfeng01 local]#  java -version

在这里插入图片描述
4. 安装Hadoop
4.1 解压Hadoop包
[root@qianfeng01 ~]# tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/
在这里插入图片描述
4.2 修改名字

[root@qianfeng01 local]# mv hadoop-2.7.6/ hadoop

在这里插入图片描述
4.3 配置环境变量

[root@qianfeng01 local]#  vim /etc/profile

4.4 向文件中添加如下内容,保存退出即可:

#HADOOP environment
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

在这里插入图片描述
4.5 使修改后的文件生效

[root@qianfeng01 local]# source /etc/profile

4.6 查看Hadoop版本

[root@qianfeng01 local]# hadoop version

在这里插入图片描述
4.7 mr程序测试
在~下创建一个目录:input

[root@qianfeng01 ~]# mkdir input

4.8 将hadoop的etc/hadoop/目录下的所有的xml文件拷贝的input目录下

[root@qianfeng01 ~]# cp /usr/local/hadoop/etc/hadoop/*.xml ./input

4.9 使用hadoop指令运行一个jar文件,测试里面的grep程序,检查xml文件中是否有符合指定正则表达式的字符串,如果有就打印到一个不存在的目录~/output中

[root@qianfeng01 ~]# hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar grep ./input ./output 'dfs[a-z.]+'
[root@qianfeng01 ~]# cd output
[root@qianfeng01 output]# ll
[root@qianfeng01 output]# cat part-r-00000

在这里插入图片描述
到这里,本地模式的安装就完成了!

二、伪分布式模式
这种模式与本地模式的相同点是都是使用一台机器,但是这种模式使用了分布式思想,相关的守护进程都是独立的,并且都有自己的jvm(内存不共享)。

节点分类:
Namenode(名称节点,也叫管理节点,简称NN)
Datanode(数据节点,也叫工作节点,简称DN)
SecondaryNamenode(辅助节点,简称SNN,不能充当Namenode)

  1. 修改配置文件
[root@qianfeng01 ~]# vim ${HADOOP_HOME}/etc/hadoop/core-site.xml

向文件中添加如下内容,保存退出即可:

<property>
        <name>fs.defaultFS</name>
        <value>hdfs://qianfeng01:8020</value>
</property>

在这里插入图片描述

  1. 修改配置文件
[root@qianfeng01 ~]# vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

向文件中添加如下内容,保存退出即可:

<property>
        <name>dfs.replication</name>
        <value>1</value>
</property>

在这里插入图片描述

  1. 修改配置文件
[root@qianfeng01 ~]# cd ${HADOOP_HOME}/etc/hadoop/
[root@qianfeng01 hadoop]# vim hadoop-env.sh

将第25行的内容改为如下,保存退出:

export JAVA_HOME=/usr/local/jdk

在这里插入图片描述

  1. 使用 hdfs namenode -format格式化集群,使之生效
[root@qianfeng01 hadoop]# hdfs namenode -format
  1. 启动集群
[root@qianfeng01 hadoop]#  start-dfs.sh
  1. 查看是否启动成功,显示如下则启动成功
[root@qianfeng01 hadoop]# jps

在这里插入图片描述

  1. 上传Linux上的文件到hdfs中
[root@qianfeng01 hadoop]# hdfs dfs -mkdir /input
[root@qianfeng01 hadoop]# echo "nihao " > ~/a.txt
[root@qianfeng01 hadoop]# hdfs dfs -put ~/a.txt /input
  1. 这时可以在web端输入网址:ip:50070 (ip是你自己的IP地址)查看是否上传成功
    如果在Linux里使用jps命令已出现其三个节点,但是web上一直连不上,那么最简单粗暴的方法就是换一个浏览器试一试!
    查看结果如下:

在这里插入图片描述

三、完全分布式模式
这种模式与伪分布式模式的区别是,这种模式是多台机器共同守护一个HDFS。

HDFS的分布式思想,就是将整个文件系统分成多个子进程,进行独立工作,各司其职,Namenode负责管理工作,Datanode负责管理存储工作。这个子进程分布到各台机器上,这些机器共同维护一个文件系统。HDFS的树状图结构是逻辑数据,在磁盘上是没有的,只能在web上可视化。

  1. 环境需求:
    1.1 防火墙必须是关闭状态
[root@qianfeng01 ~]# systemctl disable firewalld
[root@qianfeng01 ~]# systemctl disable NetworkManager

1.2 把selinux关闭掉,它是linux系统的一个安全机制,进入文件中将SELINUX设置为disabled,保存退出即可

[root@qianfeng01 ~]# vi /etc/selinux/config

在这里插入图片描述
1.3 网络配置(静态ip,域名映射)

[root@qianfeng01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO=static #将dhcp改为static
ONBOOT=yes #将no改为yes
IPADDR=192.168.10.200 #添加IPADDR属性和ip地址 (自定义)
PREFIX=24 #或者添加NETMASK=255.255.255.0
GATEWAY=192.168.10.2 #添加网关GATEWAY (可查看自己的网关)
DNS1=114.114.114.114 #添加DNS1和备份DNS
DNS2=8.8.8.8

1.4 然后重启网络服务

[root@qianfeng01 ~]# systemctl restart network

1.5 修改主机名

[root@qianfeng01 ~]#  hostnamectl set-hostname name(name为你自己想要设置的主机名)

注意:配置完ip和主机名后,最好重启一下虚拟机

[root@qianfeng01 ~]# reboot

1.6 配置/etc/hosts文件

[root@qianfeng01 ~]# vi /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.200 master #主机名和ip地址根据自己的实际情况设置
192.168.10.201 slave1 #主机名和ip地址根据自己的实际情况设置
192.168.10.202 slave2 #主机名和ip地址根据自己的实际情况设置

1.7 免密登录认证(执行命令后按提示点击三次回车键)

[root@qianfeng01 ~]#  ssh-keygen -t rsa
[root@qianfeng01 ~]# ssh-copy-id root@qianfeng01

出现如下,即可成功
在这里插入图片描述

1.8 jdk和Hadoop的环境变量的配置
参考上述本地模式的搭建

1.9 时间同步(三台机器的时间一致,使用定时器同步阿里云的时间,自行解决哈~)

  1. 修改7个配置文件。文件位置在:${HADOOP_HOME}/etc/hadoop/

    2.1. 修改core-size.xml

[root@qianfeng01 ~]# cd $HADOOP_HOME/etc/hadoop/
[root@qianfeng01 hadoop]# vi core-site.xml

向文件<configuration></configuration>中添加如下内容,保存退出即可

 <!-- hdfs的地址名称:schame,ip,port, 以及namenode的位置-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://qianfeng01:8020</value>
    </property>
     <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>

2.2 修改hdfs-size.xml

[root@qianfeng01 hadoop]# vi hdfs-size.xml

向文件<configuration></configuration>中添加如下内容,保存退出即可

<!-- namenode守护进程管理:w'q的元数据文件fsimage存储的位置-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file://${hadoop.tmp.dir}/dfs/name</value>
    </property>
    <!-- 确定DFS数据节点应该将其块存储在本地文件系统的何处-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file://${hadoop.tmp.dir}/dfs/data</value>
    </property>
    <!-- 块的副本数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!-- 块的大小(128M),下面的单位是字节-->
    <property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
    </property>
    <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>qianfeng02:50090</value>
    </property>
  	<!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
	<property>
  	  <name>dfs.namenode.http-address</name>
  	  <value>qianfeng01:50070</value>
	</property> 

2.3 修改mapred-size.xml
系统中只有副本,需要复制一份并重命名为mapred-size.xml或者直接修改副本文件名字为mapred-size.xml

[root@qianfeng01 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@qianfeng01 hadoop]# vi mapred-site.xml

向文件<configuration></configuration>中添加如下内容,保存退出即可

<!-- 指定mapreduce使用yarn资源管理器-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 可选,配置作业历史服务器的地址-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>qianfeng01:10020</value>
    </property>
    <!-- 配置作业历史服务器的http地址-->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>qianfeng01:19888</value>
    </property>

2.4 修改yarn-size.xml

[root@qianfeng01 hadoop]# vi yarn-site.xml

向文件<configuration></configuration>中添加如下内容,保存退出即可

 <!-- 指定yarn的shuffle技术-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定resourcemanager的主机名-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>qianfeng01</value>
    </property> 
    <!--下面的可选-->
    <!--指定shuffle对应的类 -->
	<property> 
	<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
     <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
	</property>

	<!--配置resourcemanager的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.address</name>
	<value>qianfeng01:8032</value>
	</property>

	<!--配置resourcemanager的scheduler的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.scheduler.address</name>
	<value>qianfeng01:8030</value>
	</property>

	<!--配置resoucemanager的资源调度的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.resource-tracker.address</name>
	<value>qianfeng01:8031</value>
	</property>

	<!--配置resourcemanager的管理员的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.admin.address</name>
	<value>qianfeng01:8033</value>
	</property>

	<!--配置resourcemanager的web ui 的监控页面-->
	<property>
	<name>yarn.resourcemanager.webapp.address</name>
	<value>qianfeng01:8088</value>
	</property>

2.5 修改hadoop-env.xml
找到文中JAVA_HOME的那一行,修改为

export JAVA_HOME=/usr/local/jdk

在这里插入图片描述

2.6 修改slaves(非常重要),此文件用于指定datanode守护进程所在的机器节点主机名

[root@qianfeng01 hadoop]#  vi slaves

将文件中修改为你自己主机的名字
在这里插入图片描述

2.7 修改yarn-env.sh

[root@qianfeng01 hadoop]# vi yarn-env.sh

在这里插入图片描述

  1. 克隆另外两台机器
    3.1 分别修改主机名
[root@qianfeng01 ~]# hostnamectl set-hostname qianfeng02
[root@qianfeng01 ~]# hostnamectl set-hostname qianfeng03
3.2 分别修改相应的ip地址
[root@qianfeng02 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@qianfeng02 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
  1. 免密校验工作
    目的是去掉第一次的询问,也就是输入yes
ssh qianfeng02

在这里插入图片描述

ssh qianfeng03

在这里插入图片描述

  1. 格式化集群
    5.1 格式化的目的:让管理节点生效

    5.2 怎么格式化
    在namenode所在的机器节点上进行格式化,格式化命令如下:

注意:只需要在第一台主机上格式化即可!

[root@qianfeng03 ~]# hdfs namenode -format 
  1. 启动集群

    6.1 若检查之后没有全部出现namenode、datanode、或者secondarynode,则可以进行单个启动进程的脚本

[root@qianfeng01 ~]# start-all.sh 
  1. web验证
    7.1 hdfs:qianfeng01:50070
    7.2 yarn:qianfeng01:8088
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 关闭脚本
    stop-all.sh

  3. 集群启动不了的暴力解决方式
    步骤1:关闭hadoop所有的守护进程
    步骤2:删除所有节点上的tmp目录 (${hadoop.tmp.dir}属性对应的目录),和logs目录
    步骤3:重新在qianfeng01上格式化集群,产生新的集群ID。

这样我们的环境搭建就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值