大数据环境搭建
- 本文初衷是为了学习归纳,若有错误,欢迎指出。
1.安装CentOS7虚拟机
这里因为用CentOS 7 的版本,最好下载7版本的镜像,如果用8的,部分命令有所不同。
CentOS官方下载地址:
http://isoredirect.centos.org/centos/7/isos/x86_64/
本机内存不够的,在虚拟机安装完系统后可以调小一点内存。
- init 0 关闭VM机器。
2.VM虚拟机环境配置
- 停止防火墙
#停止防火墙
[root@localhost ~]#systemctl stop firewalld
#禁止防火墙随着系统启动而启动
[root@localhost ~]#systemctl disable firewalld
#查看防火墙状态
[root@localhost ~]#systemctl status firewalld
- 禁止Selinux
#将SELINUX的值设置为disabled
[root@localhost ~]# vi/etc/selinux/config
#查看是否设置完成
[root@localhost ~]# cat /etc/selinux/config
3.配置虚拟机网络
这里我的物理机的IP地址:192.168.1.11 ;物理机网关192.168.1.1
VM8的IP地址:192.168.1.1;VM8的网关:192.168.0.0
虚拟机子网IP:192.168.1.0 ;子网掩码:255.255.255.0
虚拟机网关:192.168.1.2
此后创建的3台节点机器的IP从192.168.1.2后顺延,这里我选择192.168.1.21、192.168.1.22、192.168.1.23。
注意虚拟机的网关要和VM8的ip处于同一网段,并且每台机器的网关需要和虚拟机网络设置的网关一致,否则等下联网会有问题。
- 进入虚拟机,配置虚拟机IP
[root@node_1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
#NAME=ens33 #注释掉,不需要
#UUID=381ab9e3-5657-4fa6-9eee-edc719370d40 #注释掉,不需要
#DEVICE=ens33 #注释掉,不需要
ONBOOT=yes
#在文件ifcfg-ens33的末尾新增,如下内容:
IPADDR=192.168.1.21
NETMASK=255.255.255.0
GATEWAY=192.168.1.2 #和在配置虚拟网路中的网关保持一致
DNS1=8.8.8.8
DNS2=144.144.144.144
#配置完成后保存文件
#重新启动网卡
#注意:如果是centOS8的系统,启动网卡是:nmcli c reload
[root@localhost ~]#systemctl restart network
#ping 百度的官网保证虚拟机能够访问外网,方便后期在线安装一些依赖软件
[root@localhost ~]#ping www.baidu.com
4.安装XShell工具
分别安装XShell和Xftp
注意这两个工具最好从官网下载,因为破解版的会缺少文件,导致安装失败。
https://blog.csdn.net/xc_123/article/details/92806570
没有安装xftp的情况下,可以先用sftp,拖拽文件到sftp的窗口进行发送。
5.上传JDK到linux机器
这里可以直接用上一步骤所说,将jdk文件(这里用的是“jdk-8u211-linux-x64”)直接拖拽到sftp的命令行中直接传。或者在XShell通过Xftp传文件到虚拟机。上传的文件暂时放在根目录。
6.安装JDK到Linux机器
[root@localhost ~]# rpm -ivh jdk-8u211-linux-x64.rpm
- 配置java环境变量
#安装完后,可以先找下java的安装目录在哪里,用find命令查找。
[root@localhost ~]# find / -name java
/etc/pki/ca-trust/extracted/java
/etc/pki/java
/etc/alternatives/java
/var/lib/alternatives/java
/usr/bin/java
/usr/share/bash-completion/completions/java
/usr/java
#java的安装目录
/usr/java/jdk1.8.0_211-amd64/bin/java
/usr/java/jdk1.8.0_211-amd64/jre/bin/java
#修改配置文件(系统环境变量,这个文件夹每个用户都有。修改path路径,以便jvm编译时系统能找到对应的代码)
[root@localhost ~]# vi .bash_profile
#添加一下代码
# User specific environment and startup programs #java环境变量
#java环境变量加入到path中
JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
#source命令
[root@localhost ~]# source .bash_profile
[root@localhost ~]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
source命令:source filename 在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代,比如 . filename#(中间有空格)
7.配置时间同步
大数据集群需要个个节点之间的时间保持一致,否则后面会出现问题,这里利用定时任务来刷新每台机器的时间,最好是在每台机器(集群节点)都定时刷新时间。
- 安装时间同步软件
centOS8版本:yum install -y chrony
centOS7版本:yum install -y ntpdate
- 配置定时时间同步
#使用crontab -e命令添加定时时间同步配置
[root@localhost ~]# crontab -e
\#以下配置的意思是每分钟同步一次时间
*/1 * * * * /usr/sbin/ntpdate us.pool.ntp.org;
#等待一分钟左右使用date命令查看系统时间是否同步 [root@localhost ~]# date
Sun Jun 30 10:51:17 CST 2019
[root@localhost ~]#
8.安装网络工具net-tools
net-tools是Linux系统下一个排查网络故障的工具,经常需要它查看集群网络运行情况。
yum install -y net_tools
yum命令的选项:-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)
yum常用命令:
- 1.列出所有可更新的软件清单命令:yum check-update
- 2.更新所有软件命令:yum update
- 3.仅安装指定的软件命令:yum install <package_name>
- 4.仅更新指定的软件命令:yum update <package_name>
- 5.列出所有可安裝的软件清单命令:yum list
- 6.删除软件包命令:yum remove <package_name>
- 7.查找软件包 命令:yum search
9.克隆虚拟机作集群节点
这一步比较简单,通过VM虚拟机直接克隆三台机器,克隆前先关闭当前运行的虚拟机
vm点击虚拟机 - 右键 - 管理 - 克隆
10.分别配置三台虚拟机的IP和主机名
- 三台都用root权限配置主机名
节点1的机器:hostnamectl set-hostname node1
节点2的机器:hostnamectl set-hostname node2
节点3的机器:hostnamectl set-hostname node3
- 三台机器的IP地址规划如下:
节点名称 | IP地址 |
---|---|
node1 | 192.168.1.21 |
node2 | 192.168.1.22 |
node3 | 192.168.1.23 |
修改IP的命令
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#修改完成后需要重启网卡,如果重启网卡发现IP还没有生效,那重启机器试试。
systemctl restart network
#以上确保node1,node2,node3的IP地址配置已完成。
11.root用户的免密登录配置(ssh)
在XShell中开启三台节点机器,测试XShell能否连接成功
11.1 生成公钥和私钥
这里有个小窍门,xshell工具 - 查看 - 撰写 - 撰写栏 ,这里可以统一输入命令给所有机器使用。
三台机器都要。
[root@node1 ~]# ssh-keygen -t rsa #<--回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #<--回车
\#会在root用户的家目录下生成.ssh目录,此目录中会保存生成的公钥和私钥
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): #<--回车
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub. #公钥文件
The key fingerprint is:
SHA256:gpDw08iG9Tq+sGZ48TXirWTY17ajXhIea3drjy+pU3g root@node1
The key's randomart image is:
+---[RSA 2048]----+
|. . |
| * = |
|. O o |
| . + . |**3.3** **配置****hosts****文件**
11.2 配置hosts文件,用于告知当前机器如何远程链接其他机器的ip地址路径。
三台机器都要。
#hosts文件中配置三台机器ip和主机名的映射关系,其他两台机器按照相同的方式操作.
[root@node1 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.21 node1
192.168.1.22 node2
192.168.1.23 node3
11.3 拷贝公钥到彼此之间的机器上
- 将node1的公钥拷贝到node2,node3上
- 将node2的公钥拷贝到node1,node3上
- 将node3的公钥拷贝到node1,node2上
三台机器都要。
#复制到node2上
[root@node1 ~]# ssh-copy-id -i node2
Are you sure you want to continue connecting (yes/no)? yes #询问是否要连接输入yes回车
root@node2's password: #输入root用户的密码root后回车
#复制到node3上
[root@node1 ~]# ssh-copy-id -i node3
#后面其他两台机器也按照这样操作。
11.4 验证免秘钥登录
在每台机器上测试彼此是否连通
ssh node1
logout #退出
ssh node2
logout #退出
ssh node3
logout #退出
11.5 添加本地认证公钥到认证文件中
这里的公钥和私钥是刚才执行 ssh-keygen -t rsa 生成的。前面是把自己的公钥考给另外两台机器,这里是给自己的认证文件做认证,否则后续格式化hadoop时会报错。
三台机器都要。
#进入到root用户的家目录下
[root@node1 ~]# cd ~
[root@node1 ~]# cd .ssh/
#讲生成的公钥添加到认证文件中
[root@node1 .ssh]# cat id_rsa.pub >> authorized_keys
[root@node1 .ssh]#
12.安装hadoop
12.1 创建hadoop用户和用户组
该操作分别在三台机器执行。
#1.创建用户组hadoop
[root@node1 ~]# groupadd hadoop
#2.创建用户hadoop并添加到hadoop用户组中
[root@node1 ~]# useradd -g hadoop hadoop
#3.使用id命令查看hadoop用户组和hadoop用户创建是否成功
[root@node1 ~]# id hadoop
#用户uid 用户组id gid 用户组名
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
#设置hadoop用户密码为hadoop
[root@node1 ~]# passwd hadoop
[root@node1 ~]# chown -R hadoop:hadoop /home/hadoop/
[root@node1 ~]# chmod -R 755 /home/hadoop/
#把root用户的环境变量文件复制并覆盖hadoop用户下的.bash_profile
[root@node1 ~]# cp .bash_profile /home/hadoop/
[hadoop@node1 ~] su - hadoop
[hadoop@node1 ~] source.bash_profile
对三台机器的hadoop用户同样做免秘钥登录操作(1.生成公钥私钥 2.拷贝公钥到对方机器上 3.添加本地认证公钥 4.验证免密登录)。
[hadoop@node1 ~]# ssh-keygen -t rsa #<--不停回车
#拷贝公钥到彼此之间的机器上
[hadoop@node1 ~]# ssh-copy-id -i node2
[hadoop@node1 ~]# ssh-copy-id -i node3
[hadoop@node1 ~]# ssh node2
[hadoop@node1 ~]# logout
[hadoop@node1 ~]# cd .ssh/
#讲生成的公钥添加到认证文件中 ,这一步最好先检查下这个authorized_keys是否已经有内容了。
[hadoop@node1 ~]# cat id_rsa.pub >> authorized_keys
#修改.ssh目录权限
[hadoop@node1 ~]$ chmod -R 755 .ssh/
[hadoop@node1 ~]$ cd .ssh/
[hadoop@node1 .ssh]$ chmod 644 *
[hadoop@node1 .ssh]$ chmod 600 id_rsa
[hadoop@node1 .ssh]$ chmod 600 id_rsa.pub
12.2 解压缩hadoop
切回root权限。
这一步骤,调好一台机器后可以直接复制配置文件到其他两台机器上。这样保证所有的机器一致。
-
事先用xshell传好hadoop的压缩文件(hadoop-2.7.3.tar)
然后创建好存放的目录,进行解压
#1.创建hadoop安装目录
[root@node1 ~]# mkdir -p /opt/bigdata
#2.解压hadoop-2.7.3.tar.gz
[root@node1 ~]# tar -xzvf hadoop-2.7.3.tar.gz -C /opt/bigdata/
12.3 配置hadoop环境变量
添加hadoop的安装路径。
[root@node1 ~]# vi .bash_profile
\# .bash_profile
\# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
\# User specific environment and startup programs
JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
HADOOP_HOME=/opt/bigdata/hadoop-2.7.3
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME
export HADOOP_HOME
export PATH
~
验证环境变量
#1.使环境变量生效
[root@node1 ~]# source .bash_profile
#2.显示hadoop的版本信息
[root@node1 ~]# hadoop version
#3.显示出hadoop版本信息表示安装和环境变量成功.
Hadoop 2.7.3
hadoop用户下也需要按照root用户配置环境变量的方式操作一下
#把root用户的环境变量文件复制并覆盖hadoop用户下的.bash_profile
[root@node1 ~]# cp .bash_profile /home/hadoop/
#切换到hadoop用户下验证
[hadoop@node1 ~]su - hadoop
[hadoop@node1 ~]# source .bash_profile
[hadoop@node1 ~]# hadoop version
12.4 配置hadoop-env.sh
这个文件只需要配置JAVA_HOME的值即可,在文中可以vi打开后,以命令模式输入“/export”回车,找到export JAVA字眼,删除注释后添加一下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
[root@node1 ~]# cd /opt/bigdata/hadoop-2.7.3/etc/hadoop/
[root@node1 hadoop]# vi hadoop-env.sh
12.5 配置Hadoop的四大核心配置文件
-
配置core-site.xml
切换到 cd /opt/bigdata/hadoop-2.7.3/etc/hadoop/ 目录下
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- 指定hdfs的namenode主机的hostname -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!-- io操作流的配置 -->
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!--hadoop集群临时数据存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/bigdata/hadoop-2.7.3/tmpdata</value>
</property>
</configuration>
-
配置hdfs-site.xml
配置 /opt/bigdata/hadoop-3.1.2/etc/hadoop/ 目录下的hdfs-site.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--namenode元数据存储目录-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/bigdata/hadoop-2.7.3/hadoop/hdfs/name/</value>
</property>
<!--指定block块的的大小-->
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<!-- -->
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<!--工作节点的数据块存储目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/bigdata/hadoop-2.7.3/hadoop/hdfs/data/</value>
</property>
<!--block的副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
-
配置mapred-site.xml
配置 /opt/bigdata/hadoop-2.7.3/etc/hadoop/ 目录下的mapred-site.xml
<?xml version="1.0" encoding="utf-8"?>
<!--指定运行mapreduce的环境是yarn -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*, $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
-
配置yarn-site.xml
配置 /opt/bigdata/hadoop-2.7.3/etc/hadoop/ 目录下的yarn-site.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--指定resourcemanager的位置-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>node1:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>node1:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>node1:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>node1:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>node1:18088</value>
</property>
</configuration>
-
然后编辑works文件
此文件用于配置集群有多少个数据节点,我们把node2,node3作为数据节点,node1作为集群管理节点.
配置/opt/bigdata/hadoop-2.7.3/etc/hadoop/目录下的works
[root@node1 hadoop]# vi workers
#将localhost这一行删除掉
node2
node3
~
12.6 远程复制hadoop文件到集群机器
#1.进入到root用户家目录下
[root@node1 hadoop]# cd ~
#2.使用scp远程拷贝命令将root用户的环境变量配置文件复制到node2
[root@node1 ~]# scp .bash_profile root@node2:~
#3.使用scp远程拷贝命令将root用户的环境变量配置文件复制到node3
[root@node1 ~]# scp .bash_profile root@node3:~
[hadoop@node1 ~]$ scp .bash_profile hadoop@node2:~
.bash_profile 100% 361 313.6KB/s 00:00
[hadoop@node1 ~]$ scp .bash_profile hadoop@node3:~
.bash_profile 100% 361 323.1KB/s 00:00
#4.进入到hadoop的share目录下
[root@node1 ~]# cd /opt/bigdata/hadoop-3.1.2/share/
[root@node1 share]# ll
total 0
drwxr-xr-x 3 1001 1002 20 Jan 29 12:05 doc
drwxr-xr-x 8 1001 1002 88 Jan 29 11:36 hadoop
#5.删除doc目录,这个目录存放的是用户手册,比较大,等会儿下面进行远程复制的时候时间比较长,删除后节约复制时间
[root@node1 share]# rm -rf doc/
[root@node1 share]# cd ~
[root@node1 ~]# scp -r /opt root@node2:/
[root@node1 ~]# scp -r /opt root@node3:/
12.7 使集群所有机器环境变量都生效并且修改hadoop安装目录的权限
检查在node1,node2,node3的 root 用户家目录下环境变量生效。
检查在node1,node2,node3的 hadoop 用户家目录下环境变量生效。
[root@node2 hadoop-2.7.3]# cd ~
[root@node2 ~]# source .bash_profile
[root@node2 ~]# hadoop version
[root@node2 ~]# su - hadoop
[root@node2 ~]# source .bash_profile
[root@node2 ~]# hadoop version
node1,node2,node3都需要进行如下操作
#1.修改目录所属用户和组为hadoop:hadoop
[root@node1 ~]# chown -R hadoop:hadoop /opt/
#2.修改目录所属用户和组的权限值为755
[root@node1 ~]# chmod -R 777 /opt/
#3.最好检查下logs文件的权限是否是777
12.8 格式化hadoop
这一步很重要,如果失败就要返回前面的集群机器是否都有权限了,以及hadoop用户下和root用户下的ssh免秘钥登录是否都正确(认证文件是否都有这三个机器的公钥文件等。)
另外也有可能是四大配置文件出错,xml文本格式是否正确等。
#切换 [root@node1 ~]# su - hadoop
[hadoop@node1 hadoop]$ hdfs namenode -format
2019-06-30 16:11:35,914 INFO namenode.NameNode: STARTUP_MSG: /************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = node1/192.168.1.21
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.7.3
#此处省略部分日志 2019-06-30 16:11:36,636 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************
SHUTDOWN_MSG: Shutting down NameNode at node1/192.168.200.11 ************************************************************/
12.9 启动集群
[hadoop@node_1 ~]$ start-all.sh
WARNING: Attempting to start all Apache Hadoop daemons as hadoop in 10 seconds.
WARNING: This is not a recommended production deployment configuration.
WARNING: Use CTRL-C to abort.
Starting namenodes on [node1]
Starting datanodes
Starting secondary namenodes [node_1]
Starting resourcemanager
Starting nodemanagers
[hadoop@node_1 ~]$
#可以用jps查看java进程,启动集群后,由于hadoop本身就是java程序,所以后台会有进程挂在那里。
#注意NameNode
[hadoop@node_1 ~]$ jps
17556 Jps
17226 ResourceManager
16652 NameNode
16879 SecondaryNameNode
#查看nameNode打开的端口 9870
[hadoop@node_1 ~]$ netstat -anpl | grep 16652
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 192.168.1.21:9000 0.0.0.0:* LISTEN 16652/java
tcp 0 0 0.0.0.0:9870 0.0.0.0:* LISTEN 16652/java
tcp 0 0 192.168.1.21:9000 192.168.200.13:43486 ESTABLISHED 16652/java
tcp 0 0 192.168.1.21:9000 192.168.200.12:34494 ESTABLISHED 16652/java
unix 2 [ ] STREAM CONNECTED 203671 16652/java
unix 2 [ ] STREAM CONNECTED 203685 16652/java
[hadoop@node_1 ~]$
或者在浏览器地址栏中输入:http://192.168.1.21:9870查看namenode的web界面,但是这一步失败了,不知道是否Windows机映射文件有问题。
12.10 运行MapReduce程序
以下操作看到的显示都是可以在浏览器上的地址看到的。
#1.使用hdfs dfs -ls / 命令浏览hdfs文件系统,集群刚开始搭建好,由于没有任何目录所以什么都不显示.
[hadoop@node1 ~]$ hdfs dfs -ls /
#2.创建测试目录
[hadoop@node1 ~]$ hdfs dfs -mkdir /test
#3.在此使用hdfs dfs -ls 发现我们刚才创建的test目录
[hadoop@node1 ~]$ hdfs dfs -ls /
#4.使用touch命令在linux本地目录创建一个words文件
[hadoop@node1 ~]$ touch words
#5.文件中输入内容
[hadoop@node1 ~]$ vi words
#6.将创建的本地words文件上传到hdfs的test目录下
[hadoop@node1 ~]$ hdfs dfs -put words /test
#7.查看上传的文件是否成功
[hadoop@node1 ~]$ hdfs dfs -ls -r /test
Found 1 items
-rw-r--r-- 3 hadoop supergroup 23 2019-06-30 17:28 /test/words
#/test/words 是hdfs上的文件存储路径 /test/output是mapreduce程序的输出路径,这个输出路径是不能已经存在的路径,mapreduce程序 运行的过程中会自动创建输出路径,数据路径存在的话会报错,这里需要注意下.
[hadoop@node1 ~]$ hadoop jar /opt/bigdata/hadoop-3.1.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar wordcount /test/words /test/output
#验证程序输出
[hadoop@node1 ~]$ hdfs dfs -ls -r /test/output
看到以下结果说明MapReduce程序执行成功了,视情况而定,有的可能跑比较慢
[hadoop@node_1 mapreduce]$ hdfs dfs -text /test/output/part-r-00000
Bingbing 1
i 1
love 1
yes~ 1
[hadoop@node_1 mapreduce]$
13.总结
13.1 代码归纳
#linux关机
init 0
#停止防火墙
systemctl stop firewalld
#禁止防火墙随着系统启动而启动
systemctl disable firewalld
#查看防火墙状态
systemctl status firewalld
#将SELINUX的值设置为disabled
vi/etc/selinux/config
#查看是否设置完成
cat /etc/selinux/config
#配置虚拟机IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#重启网卡
systemctl restart network
#安装JDK
rpm -ivh jdk-8u211-linux-x64.rpm
#find命令查找java的安装目录
find / -name java
#source命令使环境配置生效
source ./bash_profile
#查看是否按照java成功
java -version
#在线安装ntpdate
yum install -y ntpdate
#添加定时任务
crontab -e
#查看系统时间
date
#生成公钥和私钥
ssh-keygen -t rsa
#配置映射文件
vi /etc/hosts
#拷贝公钥文件到另一台机器(已做映射)
ssh-copy-id -i node2
#ssh登录远程机器
ssh node2
#退出登录
logout
#将生成的公钥添加到认证文件中
cat id_rsa.pub >> authorized_keys
#使用id命令查看hadoop用户组和hadoop用户创建是否成功
id hadoop
#解压hadoop-3.1.2.tar.gz到/opt/bigdata/
tar -xzvf hadoop-2.7.3.tar.gz -C /opt/bigdata/
#检查hadoop的版本,是否安装成功
hadoop version
#远程拷贝到其他机器,root变更即可拷到其他用户目录下
scp .bash_profile root@node2:~
#连带目录下文件一起远程拷贝
scp -r /opt root@node2:/
#格式化hadoop
hdfs namenode -format
#启动集群
start-all.sh
#使用jps显示java进程(查看是否启动成功)jps = java progress
jps
#hdfs的命令类似于linux
#hdfs dfs + linux命令
#显示hdfs根目录
hdfs dfs -ls /
#创建hdfs目录
hdfs dfs -mkdir /test
#将创建的本地words文件上传到hdfs的test目录下
hdfs dfs -put words /test
#执行MapReduce程序,这里的/test/ourput必须是hdfs原先没有的,否则会报错。
hadoop jar /opt/bigdata/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/words /test/output
#查看hdfs文件
hdfs dfs -text /test/output/part-r-00000
修改记录
时间 | 内容 |
---|---|
2020年4月10日 | 第一次发布 |