本文共 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 login
和Password
,分别输入对应的用户名和密码即可
这里我用的是用户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
- 编辑network服务配置文件,将ONBOOT及一下编辑为如下状态,BOOTROTP改为
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 filename
或source . 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服务
- Centos7默认的防火墙是 firewall,替代了以前的 iptables
- firewal使用更加方便、功能也更加强大一些
- firewall服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持ipv4与ipv6,并支持网桥,采用firewall-cmd(command)或 firewall- config (gui)来动态的管理 kernel netfilter的临时或永久的接口规则,并实时生效而无需重启服务。
- 查看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
格式化datanodehadoop 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!