Hadoop安装部署与开发

4 篇文章 0 订阅
2 篇文章 0 订阅


点击查看原文

单机本地部署Hadoop

  1. 下载安装JDK1.8

    # 可以选择安装JDK1.8的某个版本,如 jdk-8u77-linux-x64.tar.gz
    # 解压到想要安装的目录,假设/opt/modules目录下
    $ tar -zxvf jdk-8u77-linux-x64.tar.gz -C /opt/modules 
    $ vim /etc/profile     # 添加环境变量
    
    export JAVA_HOME="/opt/modules/jdk1.8.0_77" 
    export PATH=$JAVA_HOME/bin:$PATH
    
    $ source /etc/profile   # 启用环境变量
    $ java -version  # 测试安装是否成功
    
    
  2. 下载&解压缩 Hadoop 到指定目录

    # 1. 解压缩安装文件到期望的安装目录,假设/usr/local目录
    $ tar –zxvf hadoop-2.10.0.tar.gz -C /usr/local
    $ cd /usr/local
    $ mv hadoop-2.10.0  hadoop
    $ chown -R usrname:usrgroup ./hadoop  #若非root用户则需要
    
    # 2. 检查 Hadoop是否可用
    $ cd /usr/local/hadoop
    $ ./bin/hadoop version
    
  3. Local 运行 Hadoop

    Hadoop默认本地模式,无需进行配置即可运行。

    $ cd /usr/local/hadoop
    $ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar
    # Hadoop 自带的例子程序
    
    # 统计词频
    $ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount README.txt output
    
    

伪分布部署 Hadoop

1. 按照单机本地部署Hadoop的步骤,完成本地Hadoop部署

    下载安装 JDK 1.8
    下载安装 Hadoop
    以下假设 Hadoop 安装在 /usr/local/ 目录下。

2. 修改hadoop-env.sh(hadoop/etc/hadoop/目录下),配置其中的 JAVA_HOME 变量。

 # vim hadoop-env.sh
  ......
  export JAVA_HOME=【你的JDK安装目录】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-anzEH9O3-1672400974820)(https://cdn1.tianli0.top/gh/yolin51/BlogSource/expImg/2-4.2.1.png)]

3. 修改两个配置文件(hadoop/etc/hadoop/目录下)

$ vim core-site.xml
$ vim hdfs-site.xml

core-site.xml [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nODvcGyc-1672400907579)(https://cdn1.tianli0.top/gh/yolin51/BlogSource/expImg/core-site1.png)]

hdfs-site.xml
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AdNLfLaN-1672400907579)(https://cdn1.tianli0.top/gh/yolin51/BlogSource/expImg/hdfs-site1.png)]

4. 执行Namenode节点格式化

$ cd /usr/local/hadoop
$ ./bin/hdfs namenode –format  #第一次启动时需要

5. 启动 Hadoop

    $ cd /usr/local/hadoop
    $ ./sbin/start-dfs.sh# jps 观察是否有如下进程:NameNode、DataNode和SecondaryNameNode
    # 若有则成功启动Hadoop
    # 可以使用Web界面查看HDFS信息,地址 http://localhost:50070

6. 执行 Hadoop 自带的应用程序,观察执行结果

上传文件到HDFS

   $ cd /usr/local/hadoop
   $ ./bin/hdfs dfs -mkdir /input  #建立HDFS目录input
   $ ./bin/hdfs dfs -put ./etc/hadoop/*.xml /input  #上传本地文件到HDFS
   $ ./bin/hdfs dfs -ls /input  #查看input目录下的文件信息

在这里插入图片描述

执行自带程序

  ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /input /output 'dfs[a-z.]+'
  #运行Hadoop自带的grep程序,从所有文件中筛选出符合正则表达式 “dfs[a-z.]+” 的单词,
  #并统计出现次数,最后把统计结果输出到“output”文件夹中。
  $ ./bin/hdfs dfs -ls /output
  $ ./bin/hdfs dfs -cat /output/part-r-00000

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

7. 使用Web界面查看HDFS信息

地址: http://localhost:50070。

在这里插入图片描述

8. 关闭 Hadoop

   $ stop-dfs.sh
   $ start-dfs.sh  #重新启动 Hadoop

使用HDFS命令

查看命令使用方法

cd /usr/local/hadoop
./bin/hdfs dfs

可以在终端输入如下命令,查看hdfs dfs总共支持哪些操作:

./bin/hdfs dfs –help put

HDFS目录操作

1. 目录操作

  • 在HDFS中为hadoop用户创建一个用户目录

    需要注意的是,Hadoop系统安装好以后,第一次使用HDFS时,需要首先在HDFS中创建用户目录。本教程全部采用hadoop用户登录Linux系统,因此,需要在HDFS中为hadoop用户创建一个用户目录,命令如下:

    ./bin/hdfs dfs -mkdir -p /user/hadoop
    

    该命令中表示在HDFS中创建一个/user/hadoop目录,–mkdir是创建目录的操作,-p表示如果是多级目录,则父目录和子目录一起创建,这里/user/hadoop就是一个多级目录,因此必须使用参数-p,否则会出错。

  • 显示目录内容

    /user/hadoop目录就成为hadoop用户对应的用户目录,可以使用如下命令显示HDFS中与当前用户hadoop对应的用户目录下的内容:

    ./bin/hdfs dfs -ls .
    # 该命令中,“-ls”表示列出HDFS某个目录下的所有内容,“.”表示HDFS中的当前用户目录
    

    如果要列出HDFS上的所有目录,可以使用如下命令:

    ./bin/hdfs dfs -ls 
    
  • 在用户目录下和根目录下创建目录

    下面,可以使用如下命令创建一个input目录:

    ./bin/hdfs dfs -mkdir input 
    # 完整路径`/user/hadoop/input`
    

    在创建个input目录时,采用了相对路径形式,实际上,这个input目录创建成功以后,它在HDFS中的完整路径是/user/hadoop/input

    如果要在HDFS的根目录下创建一个名称为input的目录,则需要使用如下命令:

    ./bin/hdfs dfs -mkdir /input 
    # 完整路径`/input`
    
  • 删除目录

    可以使用rm命令删除一个目录
    比如,可以使用如下命令删除刚才在HDFS中创建的/input目录(不是/user/hadoop/input目录):

    ./bin/hdfs dfs -rm -r /input 
    

    上面命令中,-r参数表示如果删除/input目录及其子目录下的所有内容,如果要删除的一个目录包含了子目录,则必须使用-r参数,否则会执行失败。

HDFS文件操作

在实际应用中,经常需要从本地文件系统向HDFS中上传文件,或者把HDFS中的文件下载到本地文件系统中。

  • 创建实例文件

    首先,使用vim编辑器,在本地Linux文件系统的/home/hadoop/目录下创建一个文件myLocalFile.txt,里面可以随意输入一些单词,比如,输入如下三行:

      Hadoop
      Spark
      XMU DBLAB
    
  • 将本地文件上传至HDFS

    然后,可以使用如下命令把本地文件系统的home/hadoop/myLocalFile.txt上传到HDFS中的当前用户目录的input目录下,也就是上传到HDFS的/user/hadoop/input/目录下

    ./bin/hdfs dfs -put /home/hadoop/myLocalFile.txt input
    

    在这里插入图片描述
    可以使用ls命令查看一下文件是否成功上传到HDFS中,具体如下:

    ./bin/hdfs dfs –ls input
    

    该命令执行后会显示类似如下的信息:
    在这里插入图片描述

  • cat命令查看HDFS文件中内容

    下面使用如下命令查看HDFS中的myLocalFile.txt这个文件的内容:

    ./bin/hdfs dfs –cat input/myLocalFile.txt
    

    在这里插入图片描述

  • 将HDFS中文件下载到本地

    下面把HDFS中的myLocalFile.txt文件下载到本地文件系统中的/home/hadoop/下载/这个目录下,命令如下:

    ./bin/hdfs dfs -get input/myLocalFile.txt  /home/hadoop/下载
    

    可以使用ls命令,到本地文件系统查看下载下来的文件myLocalFile.txt:

    在这里插入图片描述

  • 从HDFS中的一个目录拷贝到HDFS中的另外一个目录

    比如,如果要把HDFS的/user/hadoop/input/myLocalFile.txt文件,拷贝到HDFS的另外一个目录/input中(注意,这个input目录位于HDFS根目录下),可以使用如下命令:

     ./bin/hdfs dfs -cp input/myLocalFile.txt  /input
    

    在这里插入图片描述

分布式部署Hadoop

准备集群环境

  1. 修改机器的hostname

    sudo vim /etc/hostname
    

    修改节点21
    修改节点2
    修改节点3

  2. 添加域名映射

    sudo vim /etc/hosts
    

    节点1
    节点2
    节点3

  3. 关闭防火墙(避免不必要的实验干扰)
    关闭防火墙

  4. 安装 JDK
    内容同前文单机本地部署Hadoop
    安装JDK

  5. 配置 master 和 slave 之间的免密登录

    master和slave之间账户密码通讯比较麻烦,采用公玥私玥免密登陆可以避免这种弊端。
    方法就是在master端生成一个密钥对,然后将公玥发送给slave端,将来slave访问master的时候带上公玥即可验证自己的身份。

    ssh-keygen -t rsa
    # 回车
    # 回车
    # 回车
    touch ~/.ssh/authorized_keys
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    

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

在master上部署Hadoop

假设 hadoop-2.10.1.tar.gz
内容同前文单机本地部署Hadoop

在这里插入图片描述

修改配置文件

在这里插入图片描述

  1. 修改slaves文件
    在这里插入图片描述

  2. 修改core-site.xml文件

    在这里插入图片描述

  3. 修改hdfs-site.xml文件

    在这里插入图片描述

  4. 修改mapred-site.xml文件

    在这里插入图片描述

  5. 修改yarn-site.xml文件

    在这里插入图片描述

分发配置文件

在master节点上将配置好的Hadoop软件分发到集群其他节点上。
将本地文件夹复制拷贝到远程主机

scp -r 目录名 用户名@计算机IP或者计算机名称:远程路径

在这里插入图片描述

配置PATH环境变量

在master 和任何想要直接运行Hadoop命令的节点上配置PATH环境变量

vim /etc/profile # 编辑环境变量
source /etc/profile # 编辑后使更新生效

编辑内容
编辑内容

启动hadoop

# 删除之前Hadoop的遗留临时和日志文件(如果有的话)
rm -rf /usr/local/hadoop/tmp/*
rm -rf /usr/local/hadoop/logs/*

#首次启动Hadoop集群,必须在Master节点执行NameNode格式化
$ hdfs namenode -format

# 启动 HDFS、yarn、historyserver
$ start-dfs.sh
$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver
#相应的停止命令就是把start换成stop,stop-dfs.sh/stop-yarn.sh/mr-jobhistory-daemon.sh stop historyserver

# jps 查看进程,观察启动是否成功,缺少任一进程都表示出错。
# Master节点:NameNode、SecondaryNameNode、JobHistoryServer、ResourceManager(yarn进程)
# Slave节点:DataNode、NodeManager(yarn进程)

Master节点
Master节点

Slave节点Slave节点

Web界面查看 Hadoop 集群

通过Web界面查看 Hadoop 集群状况

地址: http://node01:50070

在这里插入图片描述

运行 mapreduce 作业

# 上传数据到HDFS中
$ hdfs dfs -mkdir /input
$ hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml /input

在这里插入图片描述

#运行mapreduce作业
$ hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /input /output 'dfs[a-z.]+’

在这里插入图片描述

# 查看作业运行的结果
$ hdfs dfs -ls /output
$ hdfs dfs -cat /output/part-r-00000

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

Web界面查看 YARN 集群

通过Web界面查看 YARN 集群的运行情况

http://node01:8088/cluster

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值