hadoop入门--本地运行、ssh登录、集群配置并运行

178 阅读2分钟

一、Hadoop简单了解

image.png

  • LocalMode:本地模式,数据存储在本地。【测试用】
  • Pseudo-DistributedMode:伪分布式,数据存储在HDFS(hadoop101)。【使用较少】
  • Fully-DistributedMode:完全分布式,数据存储在HDFS,多台服务器同时运行。【企业内大量使用】

case1:创建一个word.txt,随意添加字符后,统计某些字符出现次数。

image.png

需要注意的是,mapreduce程序要指定输入输出路径,输出路径不能存在!

image.png

输出完毕!

image.png

当输出路径存在时,会出现报错。

二、Hadoop完全分布式运行模式--开发重点

①编写xsync集群分发脚本(将102中的JDK安全拷贝至103、104)

  • scp:服务器与服务器之间的数据拷贝
  • 基本语法:
  • scp -r pdir/pdir/fname user@user@host:pdir/pdir/fname
  • 命令 递归 目标文件路径/名称 目的用户@主机:目的路径/名称

case2:copy102的JDK至103

{05YPOQR)}Q_V{TT%2KE@KK.png

image.png

Copy完成。

case3:103向102索取文件。

image.png

image.png

索取完成。

case4:在103操作,把102的数据copy至104

image.png

image.png

操作完成。

②rsync远程同步工具

  • rsync:用于备份和镜像,速度快、避免复制相同内容、支持符号链接。复制速度比scp更快,且rsync只对差异文件做更新,scp则将所有文件完全复制过去。
  • 基本语法:
  • rsync -av pdir/pdir/fname user@user@host:pdir/pdir/fname
  • 命令 选项参数 目标文件路径/名称 目的用户@主机:目的路径/名称
  • 参数解释: -a 归档copy -v 显示复制过程

case5:删除103中wcinput目录,同步102。

image.png

image.png

image.png

同步完成。

③xsync分发脚本

需求:循环复制文件到所有节点的相同目录下。

第一步:查看全局变量:echo $PATH 得知/home/yql/bin是其中一个。

第二步:在bin目录下写脚本:vim xsync。 代码内容: #!/bin/bash

 

#1. 判断参数个数

if [ $# -lt 1 ]

then

    echo Not Enough Arguement!

    exit;

fi

 

#2. 遍历集群所有机器

for host in hadoop102 hadoop103 hadoop104

do

    echo ====================  $host  ====================

    #3. 遍历所有目录,挨个发送

 

    for file in $@

    do

        #4. 判断文件是否存在

        if [ -e $file ]

            then

                #5. 获取父目录

                pdir=(cdP(cd -P (dirname $file); pwd)

 

                #6. 获取当前文件的名称

                fname=(basename(basename file)

                ssh host"mkdirphost "mkdir -p pdir"

                rsync -av pdir/pdir/fname host:host:pdir

            else

                echo $file does not exists!

        fi

    done

done

第三步:赋权

image.png

第四步:执行

case6:分发全局变量

使用xsync脚本,将my_env.sh分发到全部主机,以达到全局配置环境的效果。

image.png

二、SSH免密登录

image.png

第一步:进入home目录,进入.ssh目录

image.png

image.png

image.png

第二步:将私钥公钥发放

image.png

三、集群配置

  • 两点注意事项:

Ø  NameNode和SecondaryNameNode不要安装在同一台服务器

Ø  ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

image.png

  • 四大配置文件
[core-default.xml]hadoop-common-3.1.3.jar/core-default.xml
[hdfs-default.xml]hadoop-hdfs-3.1.3.jar/hdfs-default.xml
[yarn-default.xml]hadoop-yarn-common-3.1.3.jar/yarn-default.xml
[mapred-default.xml]hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml
  • 自定义配置文件

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

按要求配置自定义配置文件:

在hadoop目录下配置下面四个xml文件:

image.png

core-site.xml

image.png

hdfs-site.xml

image.png

yarn-site.xml

image.png

mapreduce-sit.xml

image.png

最后将配置好的文件使用xsync脚本分发。

集群测试

image.png

配置workers

image.png

xsync脚本分发。

第一次启动需要使用hdfs namenode -format格式化,当启动失败或者错误启动时,需要删除全部节点的data、logs文件,之后进行格式化后再重新启动。

启动/关闭命令:start-dfs.sh/stop-dfs.sh

image.png

image.png

image.png

之后在浏览器内输入:192.168.10.102:9870后可进入web页面

image.png

集群至此启动成功!