Hadoop全分布平台搭建-单词统计[完整]CentOS[详细]
发布日期:2021-06-29 11:32:25 浏览次数:2 分类:技术文章

本文共 21651 字,大约阅读时间需要 72 分钟。

Hadoop全分布集群搭建

前言:这篇文章很长,是一个完整的Hadoop全分布集群搭建实验。代码高亮部分有完整的过程。照着就可以做出来。

经验:注意文件不要写错,注意用户目录

创建虚拟机

操作系统:CentOS 7.4

创建新的虚拟机(+)

典型(推荐)(T)

安装程序光盘映像文件:选择.iso文件

虚拟机名称(这里我设为Master),位置在输入名称后会生成一个文件夹可自定

磁盘容量用默认20G-将虚拟磁盘拆分成多个文件(M)

自定义硬件-此虚拟机的内存2G(2048MB)

(计算:Master主机1台1-2G;Slave从机2台1-2G;Windows系统2G;总共8G)

然后就可以完成,开始创建虚拟机了~等待它开机按照文字指引选择需要的选项回车即可

安装CnetOS 7.

WELCOME TO CENTOS 7.

这里先安个中文,往下拉或搜索框输入chi,选择【中文-简体中文(中国)】即可

!的地方(安装位置)点进去左上角[完成(D)]

软件选择(S):这次我用【最小安装】,如果需要桌面可以用GNOME左面或者其他.使用方法差不多.只是最小安装就是用命令控制

安装过程中可以顺便设置一下root密码和创建用户.我创建了一个叫hadoop的用户

安装过程大概几分钟,完成后重启

登录用户

进入后会提示localhost loginPassword,分别输入对应的用户名和密码即可

这里我用的是用户hadoop;密码123456

创建用户操作

如果前面没有创建用户,先登录root用户

使用useradd命令创建用户

shutdown -h now#关机shutdown -r now#重启useradd 用户名#创建用户password 用户名#设置用户密码userdel -r#删除用户

配置IP-连接网络

VMware操作

编辑(E)-虚拟网络编辑器(N)-更改设置(C)

  • 查看VMnet8,设置为NAT模式

    子网IP(I):192,168.66.0 子网掩码(M):255.255.255.0

  • [NAT设置(S)…]

    网关IP(G):192.168.66.2

物理机设置:

控制面板\网络和 Internet\网络连接在此路径下,VMnet8需是已启用状态
可通过网络和共享中心-更改适配器设置进入并修改
在这里插入图片描述

CentOS配置

这个最小化安装,刚开始把用图形化界面和打好包的虚拟机的我搞傻了,那些个gedit,vim一个都没,它没联网,又不能安装…笑着做下去🙂

默认状态下最小化安装使用NetworkManager服务控制联网,但是这个配置在配置生产环境服务器时一般不会使用,而是使用系统自带的network服务,更加稳定,因此先关闭NetworkManager服务

  • 关闭NetworkManager服务

systemctl stop NetworkManager

systemctl disable NetworkManager

  • 查看网卡配置文件

ls /etc/sysconfig/network-scripts

[hadoop@localhost root]$ ls /etc/sysconfig/network-scriptsifcfg-ens33  ifdown-ippp  ifdown-routes    ifup          ifup-ipv6   ifup-ppp       ifup-tunnelifcfg-lo     ifdown-ipv6  ifdown-sit       ifup-aliases  ifup-isdn   ifup-routes    ifup-wirelessifdown       ifdown-isdn  ifdown-Team      ifup-bnep     ifup-plip   ifup-sit       init.ipv6-globalifdown-bnep  ifdown-post  ifdown-TeamPort  ifup-eth      ifup-plusb  ifup-Team      network-functionsifdown-eth   ifdown-ppp   ifdown-tunnel    ifup-ippp     ifup-post   ifup-TeamPort  network-functions-ipv6
  • 编辑network服务配置

    vi /etc/sysconfig/network-scripts/ifcfg-ens33

    [hadoop@localhost root]$ vi /etc/sysconfig/network-scripts/ifcfg-ens33
    • 编辑network服务配置文件,将ONBOOT及一下编辑为如下状态,BOOTROTP改为=static
BOOTPROTP=staticONBOOT=yesIPADDR=192.168.66.100NETWORK=255.255.255.0GATEWAY=192.168.66.2

在这里插入图片描述

  • 修改/etc/sysconfig/network文件

    [root@localhost ~]# vi /etc/sysconfig/network添加以下内容# Created by anacondaNETWORING=yesGATEWAY=192.168.66.2DNS1=8.8.8.8DNS2=114.114.114.114
  • 重启网络服务

    service network restart

    [root@localhost ~]# service network restartRestarting network (via systemctl):                        [  OK  ]

这时物理机可以ping通虚拟机IP地址,虚拟机也可以ping通网址了,也可以用或者SecureCRT之类的远程软件进行连接

配置sudoers文件

给hadoop配置免密sudo(root用户下)

vi /etc/sudoers打开sudoers配置文件

在第一百行,root用户下插入hadoop用户权限

root    ALL=(ALL)       ALLhadoop  ALL=(ALL)       NOPASSWD:ALL

这里本来是用vim的,但因为最小安装可能没有安装vim依赖,需要重新装一下[root@localhost ~]# yum -y install vim

安装完成后就可以用vim /etc/sudoers命令打开sudo配置文件了

  • 文件操作
命令 解析
i 进入编辑文本模式
Esc 退出编辑文本模式
:w 保存当前修改
:q 不保存退出
:wq 保存修改并退出

若出现:已设定选项’readonly’(请加!强制执行)

在后面加入!即可,例如::wq!

  • 编辑时行间跳转

跳转到文件的首行:普通模式下 gg

跳转到文件的尾行:普通模式下 G

跳转到指定行:普通模式100gg或者100G|命令模式下跳转到指定行::100

跳转到文件的50%:普通模式50%

查找关键字:命令模式/查找内容,输入n向后查找,输入N向前查找

创建文件夹,修改属主

mkdir -p /tmp/dir1/dir2创建一个目录树|mkdir dir1创建dir1目录|mkdir dir1 dir2同时创建两个目录

ls查看目录|ls -l显示详细信息|ls -a显示隐藏文件|ls -lrt按时间显示文件,l详细列表,r反向排序,t时间排序

chown修改属主change owner|chown -R 用户名:组名 ./|chown -R hadoop:hadoop /opt/apps|chown :mail

[root@localhost ~]# su hadoop[hadoop@localhost root]$ sudo mkdir -p /opt/apps[hadoop@localhost root]$ sudo lsanaconda-ks.cfg[hadoop@localhost root]$ ls -l /opt/apps总用量 0[hadoop@localhost root]$ sudo chown -R hadoop:hadoop /opt/apps[hadoop@localhost root]$ sudo ls -l总用量 4-rw-------. 1 root root 1423 1月  18 21:51 anaconda-ks.cfg

安装JDK

root目录下导入jdk-8u171-linux-x64.tar.gz文件,此文件适用于UNIX系统

题外话

压缩命令:tar -zcvf 压缩文件名 .tar.gz 被压缩文件名

解压命令:tar -zxvf 压缩文件名.tar.gz

  • 安装:sudo yum -y install lrzsz。rz上传或直接拖动,sz 要下的文件回车。lrzsz是一个unix通信套件提供的X,Y,和ZModem文件传输协议,可以用在windows与linux 系统之间的文件传输,体积小速度快,可替代ftp。
  • rz命令上传文件jdk-8u171-linux-x64.tar.gz到虚拟机。用sz命令也可以将虚拟机文件拷贝到本地。(;′⌒`)这里发现,我还是偏爱Xftp.可能还是用不惯普通用户.
  • 移动mv jdk-8u171-linux-x64.tar.gz /opt/apps
[hadoop@localhost root]$ sudo ls -l总用量 4-rw-------. 1 root root 1423 1月  18 21:51 anaconda-ks.cfg[hadoop@localhost root]$ sudo yum install lrzsz已加载插件:fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.nju.edu.cn * extras: mirrors.nju.edu.cn * updates: mirrors.nju.edu.cn正在解决依赖关系--> 正在检查事务---> 软件包 lrzsz.x86_64.0.0.12.20-36.el7 将被 安装--> 解决依赖关系完成依赖关系解决================================================================================================================== Package                 架构                     版本                               源                      大小==================================================================================================================正在安装: lrzsz                   x86_64                   0.12.20-36.el7                     base                    78 k事务概要==================================================================================================================安装  1 软件包总下载量:78 k安装大小:181 kIs this ok [y/d/N]: yDownloading packages:lrzsz-0.12.20-36.el7.x86_64.rpm                                                            |  78 kB  00:00:10     Running transaction checkRunning transaction testTransaction test succeededRunning transaction  正在安装    : lrzsz-0.12.20-36.el7.x86_64                                                                   1/1   验证中      : lrzsz-0.12.20-36.el7.x86_64                                                                   1/1 已安装:  lrzsz.x86_64 0:0.12.20-36.el7                                                                                   完毕![hadoop@localhost root]$ sudo rz[hadoop@localhost root]$ sudo mv jdk-8u171-linux-x64.tar.gz /opt/apps

以上内容在D1里可以看到


接下来继续

查询/卸载包

  • cd /opt/apps打开apps目录
[hadoop@localhost ~]$ cd /opt/apps[hadoop@localhost apps]$
  • 查询所有已安装的包

    列出所有被安装的rpm package【rpm -qa】

    查询一个包是否被安装【rpm -q】

[hadoop@localhost apps]$ rpm -qa

这里会看到所有的包,太多了,不知道我们到底装好了没

  • 查询jkd包

    rpm -qa|grep 要查询的包名

    在带桌面的安装里有几个多余的java包可以删一下,这里可能由于最小化安装没有那些多余的东西|详情见上一篇D2

解压并安装java包

  • 解压jdk包

tar -zxvf 文件名解压

[hadoop@localhost apps]$ tar -zvxf jdk-8u171-linux-x64.tar.gz
  • 将jdk名称改为Java

    ls查看目录中的文件

    mv dir1 dir2移动/重命名一个目录

[hadoop@localhost apps]$ lsjdk1.8.0_171  jdk-8u171-linux-x64.tar.gz[hadoop@localhost apps]$ mv jdk1.8.0_171 java[hadoop@localhost apps]$ lsjava  jdk-8u171-linux-x64.tar.gz

发现这里已经把jdk1.8.0_171重命名为java.

  • 进入profile并修改
  • 进入profile
[hadoop@localhost apps]$ sudo vim /etc/profile

修改profile,跳转至53行,插入下面两行

export JAVA_HOME=/opt/apps/javaexport PATH=$PATH:/$JAVA_HOME/bin

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL的上边

  • 让profile生效

    修改了/etc/profile文件,让它立刻生效,而不用重新登录

    source filenamesource . filename

[hadoop@localhost apps]$ source /etc/profile
  • 查看java版本

    java -version查看Java版本

[hadoop@localhost apps]$ java -versionjava version "1.8.0_171"Java(TM) SE Runtime Environment (build 1.8.0_171-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

修改主机名,增加从机

这时基本环境搭建好了,准备复制两台虚拟机作为从机

  • 修改主机名

    hostname 新主机名临时修改主机名

    hostnamectl set-hostname 新主机名永久重命名

    hostname查看主机名

[hadoop@localhost apps]$ hostnamelocalhost.localdomain[hadoop@localhost apps]$ hostnamectl set-hostname master==== AUTHENTICATING FOR org.freedesktop.hostname1.set-static-hostname ===Authentication is required to set the statically configured local host name, as well as the pretty host name.Authenticating as: rootPassword: ==== AUTHENTICATION COMPLETE ===[hadoop@localhost apps]$ hostnamemaster
  • 映射

    hosts文件的修改

[root@localhost apps]# sudo vim /etc/hosts

在hosts中插入行分别表示一台主机和两台从机地址

192.168.66.100 master192.168.66.101 slave01192.168.66.102 slave02

在下方插入,不用动上边

克隆主机,制造从机

  • 克隆虚拟机

    • 先关闭虚拟机shutdown -h now
    • 【虚拟机(M)】-【管理(M)】-【克隆©】
    • 【下一步】…克隆类型:【创建完整克隆】-名称:slave01/slave02

    顺带一提master/slave有些人认为有种族歧视,现在有些地方也会用main/secondary之类的词替代

  • 配置虚拟机IP

    • 【设置】-【网络】-【IPv4】-配置地址

      master:192.168.66.100

      slave01:192.168.66.101
      slave02:192.168.66.102

      按照前面配置IP的步骤

      • vi /etc/sysconfig/network-scripts/ifcfg-ens33修改配置文件
      • IPADDR=192.168.66.100修改为相应的IP地址
      • service network restart重启网络服务
  • ping通测试

    配置完成后,3台机之间相互ping IP地址与主机名

    格式:ping IP地址ping 主机名

    使用Ctrl + C结束进程

    [hadoop@master root]$ ping slave01PING slave01 (192.168.66.101) 56(84) bytes of data.64 bytes from slave01 (192.168.66.101): icmp_seq=1 ttl=64 time=1.21 ms64 bytes from slave01 (192.168.66.101): icmp_seq=2 ttl=64 time=0.566 ms64 bytes from slave01 (192.168.66.101): icmp_seq=3 ttl=64 time=0.712 ms^C--- slave01 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2002msrtt min/avg/max/mdev = 0.566/0.831/1.215/0.277 ms
  • 若ping不通

    • 检查网络连接是否打开
    • 查看当点IP地址ip a s
[root@master ~]# ip a s1: lo: 
mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 后面还有很多信息

主机从机远程连接

  • 生成秘钥

    ssh-keygen生成、管理和转换认证密钥

    四次回车

[hadoop@master root]$ ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Created directory '/home/hadoop/.ssh'.Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop/.ssh/id_rsa.Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.The key fingerprint is:SHA256:7HOze3bcmWyZMMy9P/oRmeUe+ZSvjPb25FiqjqoZQJY hadoop@masterThe key's randomart image is:+---[RSA 2048]----+|                 ||     .           ||    E           .||   o   .       .*||    .   S   o .Bo||     . .     = +=||      . o o  .+o%||       o o ++o+^o||      o...+*+*Xo*|+----[SHA256]-----+
  • 实现SSH无密码登录

    • ssh-copy-id 从机名 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利

    • ssh-copy-id 机器名-yes-123456操作完3个用户

      ssh 机器名登录远程连接

      exit登出

[hadoop@master root]$ ssh-copy-id slave01/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/hadoop/.ssh/id_rsa.pub"The authenticity of host 'slave01 (192.168.66.101)' can't be established.ECDSA key fingerprint is SHA256:bMSDU11dxbs64H5bqDlyUI0D0FRQb/u/keLKy9D6+ww.ECDSA key fingerprint is MD5:61:7a:5d:93:10:1d:5a:54:e4:4e:e3:6b:05:9d:12:09.Are you sure you want to continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keyshadoop@slave01's password:123456 Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'slave01'"and check to make sure that only the key(s) you wanted were added.[hadoop@master root]$ ssh slave01Last login: Sat Jan 23 16:30:00 2021[hadoop@master ~]$ exit登出Connection to slave01 closed.

这里把master、slave01、slave02的操作都做一遍。

也可以用hostnamectl set-hostname命令修改从机的主机名
后面也可以通过远程连接的方式,进行关闭从机防火墙等操作

  • 停止 firewall服务
    1. Centos7默认的防火墙是 firewall,替代了以前的 iptables
    2. firewal使用更加方便、功能也更加强大一些
    3. firewall服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持ipv4与ipv6,并支持网桥,采用firewall-cmd(command)或 firewall- config (gui)来动态的管理 kernel netfilter的临时或永久的接口规则,并实时生效而无需重启服务。
    4. 查看firewall版本 firewall-cmd --version
[hadoop@master root]$ ssh slave01Last login: Sat Jan 23 16:52:34 2021 from master[hadoop@master ~]$ sudo systemctl stop firewalld.service[hadoop@master ~]$ sudo systemctl disable firewalld.serviceRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[hadoop@master ~]$ exit登出Connection to slave01 closed.

使用远程连接即可完成三台机关闭防火墙的操作

解压并安装Hadoop

过程类似上面安装java

  • 文件操作

    • 进入文件夹cd /opt/apps

    • 上传文件在xshell中使用rz,但要先安装sudo yum -y install lrzsz。也可以用xftp或拖入虚拟机等方式。

    • 解压文件tar -zxvf 文件名

    • 删除文件rm 文件名

    • 移动文件mv 文件名 文件位置mv hadoop-2.8.3.tar.gz /opt/apps

    • 重命名文件mv 原文件名 修改文件名

[hadoop@master root]$ rz[hadoop@master apps]$ # mv hadoop-2.8.3.tar.gz /opt/apps[hadoop@master apps]$ # cd /opt/apps[hadoop@master apps]$ # tar -zxvf hadoop-2.8.3.tar.gz[hadoop@master apps]$ lshadoop-2.8.3  hadoop-2.8.3.tar.gz  java  jdk-8u171-linux-x64.tar.gz[hadoop@master apps]$ # rm hadoop-2.8.3.tar.gz rm:是否删除普通文件 "hadoop-2.8.3.tar.gz"?y[hadoop@master apps]$ # rm jdk-8u171-linux-x64.tar.gz rm:是否删除普通文件 "jdk-8u171-linux-x64.tar.gz"?y[hadoop@master apps]$ mv hadoop-2.8.3 hadoop[hadoop@master apps]$ lshadoop  java
  • 修改profile文件

    • sudo vim /etc/profile进入profile
    [hadoop@master apps]$ sudo vim /etc/profile
    • 53行修改以下内容,插入HADOOP(2行)部分不要输错
export JAVA_HOME=/opt/apps/javaexport PATH=$PATH:/$JAVA_HOME/binexport HADOOP_HOME=/opt/apps/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
  • profile生效source /etc/profile
  • 查看Hadoop版本hadoop version
    • 确认是否更改正确
[hadoop@master apps]$ sudo vim /etc/profile[hadoop@master apps]$ source /etc/profile[hadoop@master apps]$ hadoop versionHadoop 2.8.3Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b3fe56402d908019d99af1f1f4fc65cb1d1436a2Compiled by jdu on 2017-12-05T03:43ZCompiled with protoc 2.5.0From source with checksum 9ff4856d824e983fa510d3f843e3f19dThis command was run using /opt/apps/hadoop/share/hadoop/common/hadoop-common-2.8.3.jar

绝对路径:从顶级目录考试,描述一个文件路径的完整信息

相对路径:相对于当前工作目录的路径

  • 查看路径
    • pwd显示工作路径
[hadoop@master root]$ cd /opt/apps/hadoop/etc/hadoop[hadoop@master hadoop]$ pwd/opt/apps/hadoop/etc/hadoop

修改子文件配置

划重点┏ (゜ω゜)=☞这个实验里最主要的就是要修改以下7个文件

  • hadoop-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • slaves
  • yarn-site.xml
  • yarn-env.sh

hadoop-env.sh配置环境变量

  • vim hadoop-env.sh配置环境environment环境.sh可执行的
[hadoop@master hadoop]$ vim hadoop-env.sh
  • 修改第25行,把export JAVA_HOME=${JAVA_HOME}改为以下
export JAVA_HOME=/opt/apps/java

core-site.xml配置Common组件的属性

  • 配置vim core-site.xml
[hadoop@master hadoop]# vim core-site.xml
  • 修改第19行,在<configuration>标签中插入以下内容
fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
/opt/apps/hadoop/tmpdata

分布式,相当于聚合

MapReduce缺点:每次都要写到磁盘(写磁盘不如写内存快)

spark清洗分析

yard资源调度,负载均衡

数据放在DataNode

属性信息:元数据,类似数据字典

假设Hadoop装好后查看文件系统。浏览器查询:hdfs://master:9000。master相当于192.168.66.100

<property>属性标签

hdfs-site.xml存储系统配置文件

  • 修改vim hdfs-site.xml配置

    • 配置vim hdfs-site.xml
    [hadoop@master hadoop]$ vim hdfs-site.xml
    • 修改:在第19行<condiguration>中修改以下内容
dfs.replication
2
dfs.namenode.http-address
master:50070
dfs.namenode.secondary.http-address
master:50090
dfs.namenode.name.dir
/opt/apps/hadoop/namenode
dfs.datanode.data.dir
/opt/apps/hadoop/datanode

mapred-site.xml配置map-reduce组件属性

  • mv mapred-site.xml.template mapred-site.xml重命名mapred-site.xml.template文件
[hadoop@master hadoop]$ mv mapred-site.xml.template mapred-site.xml[hadoop@master hadoop]$ vim mapred-site.xml
  • vim mapred-site.xml打开配置文件,在第19行<configuration>标签中插入

    mapreduce.framework.name
    yarn

yarn-site.xml增加yarn功能

  • vim yarn-site.xml修改yarn文件

    [hadoop@master hadoop]$ vim yarn-site.xml
  • 修改:在第15行<configuration>标签中插入如下内容

    yarn.resourcemanager.hostname
    master
    yarn.nodemanager.aux-services
    mapreduce_shuffle

    shuffle荷官:两个交给一个结点统计

slaves文件指明DateNode进程

  • vim slaves修改配置文件

    [hadoop@master hadoop]$ vim slaves
  • dd命令删除行(删除掉本来的localhost)

  • 编辑插入如下文件内容

    masterslave01slave02

yarn-env.sh配置yarn环境变量

  • vim yarn-env.sh修改yarn环境变量

    [hadoop@master hadoop]$ vim yarn-env.sh
  • 查找JAVA_HOME,使用:/JAVA_HOME命令,用n或·N查找上一个或下一个

  • 第23行修改路径为如下内容

# export JAVA_HOME=/opt/app/java`

修改完七个文件

[hadoop@master root]$ cd /opt/apps/hadoop/etc/hadoop[hadoop@master hadoop]$ pwd/opt/apps/hadoop/etc/hadoop[hadoop@master hadoop]$ vim hadoop-env.sh[hadoop@master hadoop]$ vim core-site.xml[hadoop@master hadoop]$ vim hdfs-site.xml[hadoop@master hadoop]$ mv mapred-site.xml.template mapred-site.xml[hadoop@master hadoop]$ vim mapred-site.xml[hadoop@master hadoop]$ vim yarn-site.xml [hadoop@master hadoop]$ vim slaves [hadoop@master hadoop]$ vim yarn-env.sh

格式化并启动集群

拷贝到文件夹

  • cd /opt/apps进入apps目录

  • ls查看文件

  • 远程拷贝hadoop文件夹到从机

    scp -r hadoop hadoop@slave01:/opt/apps

    scp -r hadoop hadoop@slave02:/opt/apps

[hadoop@master hadoop]$ cd /opt/apps[hadoop@master apps]$ lshadoop  java[hadoop@master apps]$ scp -r hadoop hadoop@slave01:/opt/apps

使用scp命令如果出现错入会提示如下信息

usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]           [-l limit] [-o ssh_option] [-P port] [-S program]           [[user@]host1:]file1 ... [[user@]host2:]file2

正确时进行文件传输

  • 复制profile文件到从机

    scp /etc/profile root@slave01:/etc

    scp /etc/profile root@slave02:/etc

    [hadoop@master apps]$ scp /etc/profile root@slave01:/etcroot@slave01's password:123456 profile                                                                         100% 1974     1.2MB/s   00:00    [hadoop@master apps]$ scp /etc/profile root@slave02:/etcroot@slave02's password:123456 profile

格式化

  • hadoop namenode -format格式化磁盘命令

    [hadoop@master apps]$ hadoop namenode -format
  • 查看结果

    Master:status 0

  • 登录从机:slave01,slave02

    • hadoop datanode -format格式化datanode

      hadoop datanode -format

    结果-slave01:status 1

    结果-slave02:status 1

    如果出现bash:hadoop:command not found...等问题

    尝试重启profile配置文件source /etc/profile

在这里插入图片描述


启动全分布集群

启动集群

  • 在Master主机中

  • start-dfs.sh启动dfs脚本

  • start-yarn.sh启动yarn脚本

    [hadoop@master apps]$ start-dfs.shStarting namenodes on [master]master: starting namenode, logging to /opt/apps/hadoop/logs/hadoop-hadoop-namenode-master.outslave02: starting datanode, logging to /opt/apps/hadoop/logs/hadoop-hadoop-datanode-master.outmaster: starting datanode, logging to /opt/apps/hadoop/logs/hadoop-hadoop-datanode-master.outslave01: starting datanode, logging to /opt/apps/hadoop/logs/hadoop-hadoop-datanode-master.outStarting secondary namenodes [master]master: starting secondarynamenode, logging to /opt/apps/hadoop/logs/hadoop-hadoop-secondarynamenode-master.out[hadoop@master apps]$ start-yarn.shstarting yarn daemonsstarting resourcemanager, logging to /opt/apps/hadoop/logs/yarn-hadoop-resourcemanager-master.outslave01: starting nodemanager, logging to /opt/apps/hadoop/logs/yarn-hadoop-nodemanager-master.outslave02: starting nodemanager, logging to /opt/apps/hadoop/logs/yarn-hadoop-nodemanager-master.outmaster: starting nodemanager, logging to /opt/apps/hadoop/logs/yarn-hadoop-nodemanager-master.out

查询进程

  • jps命令(Java Virtual Machine Process Status Tool)

  • Master主机查询到6个进程

    [hadoop@master apps]$ jps3264 Jps2546 DataNode2707 SecondaryNameNode2854 ResourceManager2412 NameNode2988 NodeManager
  • slave01从机jps查询到3个进程

    [hadoop@master apps]$ jps1568 DataNode1674 NodeManager1787 Jps
  • slave02从机jps查询到3个进程

    [hadoop@master apps]$ jps1750 NodeManager1863 Jps1644 DataNode

关闭进程

  • stop-yarn.sh停止yarn脚本

  • stop-dfs.sh停止dfs脚本

[hadoop@master apps]$ stop-yarn.shstopping yarn daemonsstopping resourcemanagerslave01: stopping nodemanagerslave02: stopping nodemanagermaster: stopping nodemanagerslave01: nodemanager did not stop gracefully after 5 seconds: killing with kill -9slave02: nodemanager did not stop gracefully after 5 seconds: killing with kill -9master: nodemanager did not stop gracefully after 5 seconds: killing with kill -9no proxyserver to stop[hadoop@master apps]$ stop-dfs.shStopping namenodes on [master]master: stopping namenodeslave02: stopping datanodeslave01: stopping datanodemaster: stopping datanodeStopping secondary namenodes [master]master: stopping secondarynamenode

单词统计

文件操作

  • chown -R hadoop:hadoop /opt/apps改变目录拥有者

  • echo命令打印目录HADOOP_HOMEecho $HADOOP_HOME

[hadoop@master apps]$ chown -R hadoop:hadoop /opt/apps[hadoop@master apps]$ echo $HADOOP_HOME/opt/apps/hadoop
  • 打开前面关闭的yarn和dfs进程
  • hadoop fs -mkdir /test创建test文件夹
  • hadoop fs -ls /查看根
[hadoop@master apps]$ hadoop fs -mkdir /test[hadoop@master apps]$ hadoop fs -ls /Found 1 itemsdrwxr-xr-x   - hadoop supergroup          0 2021-01-23 19:47 /test

放错位置的话下面这是hadoop fs文件系统的删除文件夹命令

[hadoop@master root]$ hadoop fs -rm -r -skipTrash /testDeleted /test
  • cd回到本地~

  • vim abc.txt编辑一个文本文件,名字随意,空白文件随便加入内容

  • hadoop fs -put abc.txt /test/上传到hadoop

  • hadoop fs -ls /test/查询是否上传成功

[hadoop@master apps]$ cd[hadoop@master ~]$ vim abc.txt[hadoop@master ~]$ hadoop fs -put abc.txt /test[hadoop@master ~]$ hadoop fs -ls /testFound 1 items-rw-r--r--   2 hadoop supergroup         12 2021-01-23 19:50 /test/abc.txt

调用单词统计包

  • 创建words.txt文件

    • vim words.txt编辑文件
    [hadoop@master ~]$ vim words.txt
    • 插入如下内容
    hello johnhello tomhello amyhello timhello tom
  • hadoop fs -mkdir /input创建input文件夹

  • hadoop fs -put words.txt /input上传words.txt文件到input文件夹

[hadoop@master ~]$ hadoop fs -mkdir /input[hadoop@master ~]$ hadoop fs -put words.txt /input

进入mapreduce文件夹

  • cd /opt/apps/hadoop/share/hadoop/mapreduce

  • ls查看jar包

  • pwd查看到/opt/apps/hadoop/share/hadoop/mapreduce

[hadoop@master ~]$ cd /opt/apps/hadoop/share/hadoop/mapreduce[hadoop@master mapreduce]$ lshadoop-mapreduce-client-app-2.8.3.jar         hadoop-mapreduce-client-jobclient-2.8.3.jar        libhadoop-mapreduce-client-common-2.8.3.jar      hadoop-mapreduce-client-jobclient-2.8.3-tests.jar  lib-exampleshadoop-mapreduce-client-core-2.8.3.jar        hadoop-mapreduce-client-shuffle-2.8.3.jar          sourceshadoop-mapreduce-client-hs-2.8.3.jar          hadoop-mapreduce-examples-2.8.3.jarhadoop-mapreduce-client-hs-plugins-2.8.3.jar  jdiff[hadoop@master mapreduce]$ pwd/opt/apps/hadoop/share/hadoop/mapreduce

查看结果

  • 运行wordcount例子wordcount <in> [<in>...] <out>

    hadoop jar hadoop-mapreduce-examples-2.8.3.jar wordcount /input /out

    [hadoop@master mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.8.3.jar wordcount /input /out
  • 查看结果

    cat连接文件并打印hadoop fs -cat /out/part-r-00000

    [hadoop@master mapreduce]$ hadoop fs -cat /out/part-r-00000amy	1hello	5john	1tim	1tom	2

浏览器查看

打开浏览器,查看地址192.168.66.100:50070

在这里插入图片描述

转载地址:https://blog.csdn.net/ZYJ_OvO/article/details/113061924 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:算法练习-C/C++
下一篇:大数据技术与应用-D2-平台搭建分布式

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月22日 20时50分44秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章