Hadoop-HDFS三种模式介绍及配置

Hadoop介绍

hadoop分为三部分: Common(底座) 、HDFS 、Yarn 、MapReduce(有点过时了)

hadoop生态圈: 除了Hadoop技术以外,还有 hive 、zookeeper 、flume、sqoop、datax、azkaban 等一系列技术

hadoop 的三大组件: HDFS 、Yarn、MapReduce

HDFS : 解决的是分布式存储的问题

MapReduce: 解决的是计算的问题,他是一个计算的框架

Yarn:计算的时候,使用的资源如何协调(Windows操作系统)

本地模式

配置:

1、上传
2、解压
   tar -zxvf hadoop-3.3.1.tar.gz -C /opt/installs/
3、重命名
   cd /opt/installs/
   mv hadoop-3.3.1 hadoop
4、开始配置环境变量
   vi /etc/profile
   
export JAVA_HOME=/opt/installs/jdk
export HADOOP_HOME=/opt/installs/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

5、刷新配置文件
   source /etc/profile
6、验证hadoop命令是否可以识别
   hadoop version

案例:

使用一下hadoop这个软件(案例WordCount):

词频统计就是我们大数据中的HelloWorld!

在 /home 下创建了一个文件 wc.txt   命令: touch wc.txt

需要统计的词如下:
hello world spark flink
hello laoyan 2202 laolv
hello suibian suibian hello

接着使用自动的wordCount工具进行统计:
hadoop jar /opt/installs/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /home/wc.txt /home/output

hadoop jar   执行某个jar包(其实就是java代码)

/opt/installs/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar  这个是jar的地址

/home/wc.txt   要统计的文件
/home/output   统计结果放哪里

如果统计的结果文件夹已经存在,会报错。

上面总结一下:

数据在本地磁盘上 /home/wc.txt

计算的结果也是在本地磁盘上 /home/ouput

案例二:PI的计算

hadoop jar /opt/installs/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi 10 100

10 代表10个任务
100 代表的是100次/每个任务

伪分布模式

伪分布:按照分布式的步骤搭建,但是呢,服务器只有一台。

进行搭建之前的一些准备工作:

环境准备⼯作: 
1、安装了jdk
2、安装了hadoop
3、关闭了防⽕墙 
    systemctl status firewalld
4、免密登录
     ⾃⼰对⾃⼰免密
     ssh-copy-id bigdata01   选择yes 输⼊密码
     测试免密是否成功:    ssh bigdata01
5、修改linux的⼀个安全机制
    vi /etc/selinux/config
   修改⾥⾯的 SELINUX=disabled
6、设置host映射

配置开始:

位置: /opt/installs/hadoop/etc/hadoop

以下圈住的都是重要的文件:

core-site.xml

<configuration>
  <!-- 设置namenode节点 -->
  <!-- 注意: hadoop1.x时代默认端⼝9000 hadoop2.x时代默认端⼝8020 hadoop3.x时 代默认端⼝ 9820 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://bigdata01:9820</value>
  </property>
  
  <!-- hdfs的基础路径,被其他属性所依赖的⼀个基础路径 -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/installs/hadoop/tmp</value>
  </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
        <!--备份数量-->
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!--secondarynamenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>bigdata01:9868</value>
    </property>
    <!-- namenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>bigdata01:9870</value>
    </property>
</configuration>

hadoop-env.sh

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

export JAVA_HOME=/opt/installs/jdk

修改workers 文件:

vi workers
修改里面的内容为: bigdata01 保存

对整个集群记性namenode格式化

hdfs namenode -format

格式化其实就是创建了一系列的文件夹:

这个文件夹的名字是 logs tmp

假如你想格式化第二次,需要先删除这两个文件夹,然后再格式化

启动集群:

start-dfs.sh

通过网址访问hdfs集群

http://虚拟机的IP:9870/

如果访问不到:检查防火墙是否关闭。

测试一下这个hdfs的文件系统:

Hdfs中的shell命令

目前搭建的这个到底是hdfs的伪分布还是hadoop伪分布?

答案是 hdfs的伪分布,但是hdfs 也是hadoop的一部分。

真正的hadoop伪分布还需要配置yarn 才算真正的伪分布。

使用这个文件系统:

1、将要统计的内容上传至hdfs文件系统
   hdfs dfs -mkdir /home
   hdfs dfs -put /home/wc.txt /home
2、使用wordcount统计wc.txt

hadoop jar /opt/installs/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /home/wc.txt /home/ouput

3、查看统计结果
hdfs dfs -cat /ouput/*

假如你的环境是伪分布式模式,那么本地模式直接被替换了,回不去了。

此模式跟本地模式有何区别?

这两种方式,首选统计的代码都在本地,但是本地模式,数据和统计的结果都在本地。

伪分布模式,它的数据来源在 hdfs 上,统计结果也放在 hdfs上。

Hdfs中的shell命令

假如你想通过web界面查看一个文件的内容,点击报错:

默认是要报错的,因为这是一种安全机制,可以修改一下:

在hdfs-site.xml 中添加如下配置:

<property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
</property>


在windows本机,修改hosts映射关系。
C:\Windows\System32\drivers\etc\hosts
修改内容如下:
192.168.233.128 bigdata01

关于hdfs文件系统,有三种操作方式:

1、图形化界面 比如 http://IP地址:9870

2、shell命令操作 比如 hdfs dfs -put 上传 -cat 查看

3、通过java代码操作

shell命令操作:

hdfs dfs -put  本地文件  hdfs路径                   本地上传到集群
hdfs dfs -mkdir /abc                               创建文件夹
hdfs dfs -mkdir -p /abc/bcd/cde                    创建多级文件夹使用   -p
hdfs dfs -ls /a                                    查看某个路径下的文件或者文件夹
hdfs dfs -ls -R /a                                 不仅查看某个路径,还把嵌套的文件夹都展示出来
hdfs dfs -cat /hdfs上的文件                         查看某个文件
hdfs dfs -moveFromLocal 本地文件 hdfs的路径          剪切
hdfs dfs -get hdfs的路径 本地文件                    下载(此操作要谨慎)
hdfs dfs -cp /log.txt /ouput                        将hdfs上的一个文件拷贝到另一个文件夹
hdfs dfs -chmod 777 /wc.txt                         hdfs上的文件也可以赋权限

全分布搭建

全分布模式:至少有三台以上的Linux

准备工作:

1、准备三台服务器

检查这三台服务器是否都满足条件:

  (1)、是否安装了jdk

  (2)、设置host映射 192.168.140.128 bigdata01 ... bigdata03     (3)、远程拷贝

       scp -r /etc/host root@bigdata02:/etc/

       scp -r /etc/host root@bigdata03:/etx/

     (4)、免密登录

      bigdata01 免密登录到bigdata01 bigdata02 bigdata03

      ssh-copy-id bigdata02

    (5)、第一台安装了hadoop

    (6)、防火墙关闭了

    systemctl status firewalld

    (7)、修改Linux的安全机制

    vi /etc/selinux/config

    修改里面的 :SELINUX=disabled

2、 检查各项内容是否到位

如果之前装过伪分布模式,要关闭服务

stop-dfs.sh

3、修改bigdata01配置文件

路径: /opt/installs/hadoop/etc/hadoop

core-site.xml(不需要修改)

hdfs-site.xml(需要修改)

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!--secondarynamenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>bigdata02:9868</value>
    </property>
    <!-- namenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>bigdata01:9870</value>
    </property>
</configuration>

hadoop-env.sh(不需要修改)

workers(需要修改)

bigdata01
bigdata02
bigdata03

修改完了第一台的配置文件,开始分发到其他两台上去。

假如以前没有将bigdata01上的hadoop 拷贝给 02 和 03

那么就远程拷贝:

scp -r /opt/installs/hadoop/ bigdata02:/opt/installs/

scp -r /opt/installs/hadoop/ bigdata03:/opt/installs/

如果以前已经拷贝过了,只需要拷贝刚修改过的配置文件即可:

scp -r /opt/installs/hadoop/etc/hadoop/ bigdata02:/opt/installs/hadoop/etc/

scp -r /opt/installs/hadoop/etc/hadoop/ bigdata03:/opt/installs/hadoop/etc/

拷贝环境变量:
scp -r /etc/profile root@bigdata02:/etc/
scp -r /etc/profile root@bigdata03:/etc/

在02 和 03 上刷新环境变量  source /etc/profile

4、格式化namenode

hdfs namenode -format

5、启动hdfs

只在第一台电脑上启动
start-dfs.sh

启动后jps,看到

bigdata01bigdata02bigdata03
namenodesecondaryNameNodex
datanodedatanodedatanode

web访问:namenode 在哪一台,就访问哪一台。例如:http://bigdata01:9870

总结:

1、start-dfs.sh 在第一台启动,不意味着只使用了第一台,而是启动了集群。 stop-dfs.sh 其实是关闭了集群 2、一台服务器关闭后再启动,上面的服务是需要重新启动的。 这个时候可以先停止集群,再启动即可。也可以使用单独的命令,启动某一个服务。

3、namenode 格式化有啥用?

   相当于在整个集群中,进行了初始化,初始化其实就是创建文件夹。创建了什么文件夹:

  logs tmp

  你的hadoop安装目录下。

hdfs --daemon start namenode                                  # 只开启NameNode
hadoop --daemon start secondarynamenode                       # 只开启SecondaryNameNode
hadoop --daemon start datanode                                # 只开启DataNode

hadoop --daemon stop namenode                                 # 只关闭NameNode
hadoop --daemon stop secondarynamenode                        # 只关闭SecondaryNameNode
hadoop --daemon stop datanode                                 # 只关闭DataNode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值