CentOS7下Hadoop3.2.1的安装与部署(单机模式)

简介: CentOS7下Hadoop3.2.1的安装与部署(单机模式)

安装准备

下载Hadoop安装包

下载地址:https://www.apache.org/dyn/closer.cgi/hadoop/common

本例中,我下载的是当前最新的稳定版本 hadoop-3.2.1.tar.gz

下载JDK

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

先执行如下命令,查看自己Linux服务器的操作系统位数,下载适用的JDK安装包。

[root@localhost ~]# getconf LONG_BIT
64

我的Linux操作系统是64位的,所以我选择下载 jdk-8u211-linux-x64.tar.gz

将下载好的hadoop-3.2.1.tar.gz 和 jdk-8u211-linux-x64.tar.gz 安装包上传到服务器。

修改HOSTS配置

[hadoop@localhost ~]$ sudo vi /etc/hosts
## 在文件末尾添加一行
127.0.0.1   hadoop001

如果报告如下错误:hadoop is not in the sudoers file. This incident will be reported. 这是因为在/etc/sudoers文件里没有给当前用户添加sudo权限。

解决办法:

1. 切换到root用户下,可执行 su 命令,然后输入root的密码。

2. /etc/sudoers文件默认情况下是只读的,若要修改它需要为其添加写权限,使用命令 chmod u+w /etc/sudoers。

[root@localhost ~]# ll /etc/sudoers
-r--r-----. 1 root root 4188 Jul  7  2015 /etc/sudoers
[root@localhost ~]# chmod u+w /etc/sudoers
ll /etc/sudoers
[root@localhost ~]# -rw-r-----. 1 root root 4188 Jul  7  2015 /etc/sudoers

3. 编辑/etc/sudoers,执行 vi /etc/sudoers 命令,在 root ALL=(ALL) ALL 这一行下面添加一行,内容如下。

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
## 为 hadoop 用户添加 sudo 权限,sudo 时需要键入密码
hadoop  ALL=(ALL)       ALL
## 或者,为 hadoop 用户添加 sudo 权限,sudo 时无需密码
## hadoop    ALL=(ALL)       NOPASSWD: ALL
## 或者,为 bigdata 用户组下面的所有用户添加 sudo 权限,sudo 时需要键入密码
## %bigdata  ALL=(ALL)       ALL
## 或者,为 bigdata 用户组下面的所有用户添加 sudo 权限,sudo 时无需密码
## %bigdata  ALL=(ALL)       NOPASSWD: ALL

4.修改完毕,保存文件,取消掉 /etc/sudoers 的写权限。

[root@localhost ~]# chmod u-w /etc/sudoers

安装JDK

首先,将JDK安装包解压至安装目录。

[hadoop@localhost ~]$ tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/local/

然后,执行命令 vi ~/.bash_profile 在~/.bash_profile文件中增加Java环境变量。

export JAVA_HOME=/usr/local/jdk1.8.0_211
export JAVA_BIN=$JAVA_HOME/bin
export JAVA_LIB=$JAVA_HOME/lib
export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_BIN
export PATH

环境变量配置完之后,记得执行 source ~/.bash_profile 命令使新添加的环境变量生效。

最后,输入 java -version 命令查看JDK是否安装成功。

[hadoop@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)

安装Hadoop

首先,将hadoop-3.2.1.tar.gz 解压至安装目录。

[hadoop@localhost ~]$ tar -zxvf hadoop-3.2.1.tar.gz -C /usr/local/

接下来,编辑 ~/.bash_profile 配置文件,增加 Hadoop 相关用户环境变量,添加后bash_profile文件完整内容如下:

export JAVA_HOME=/usr/local/jdk1.8.0_211
export JAVA_BIN=$JAVA_HOME/bin
export JAVA_LIB=$JAVA_HOME/lib
export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
export HADOOP_HOME=/usr/local/hadoop-3.2.1
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_BIN:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH

同样地,环境变量配置完之后,记得执行 source ~/.bash_profile 命令使环境变量生效。

最后,还需要修改 %HADOOP_HOME%/etc/hadoop/ 目录下面的几个配置文件。

hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/usr/local/jdk1.8.0_211
# Location of Hadoop.
export HADOOP_HOME=/usr/local/hadoop-3.2.1

mapred-site.xml

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
                <final>true</final>
                <description>The runtime framework for executing MapReduce jobs</description>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1</value>
        </property>
</configuration>

core-site.xml

<configuration>
        <property>
                <name>fs.default.name</name>
                <value>hdfs://hadoop001:9001</value>
        </property>
</configuration>

hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/home/hadoop/dfs/namenode</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/home/hadoop/dfs/datanode</value>
        </property>
        <property>
                <name>dfs.http.address</name>
                <value>0.0.0.0:50070</value>
        </property>
</configuration>

yarn-site.xml

<configuration>
        <!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
                <final>true</final>
        </property>
</configuration>

workers

在Hadoop2.X中该配置文件名为 slaves,清空文件内容,仅保留HOSTS 中配置的 hadoop001 主机。

启动Hadoop

格式化NameNode

第一次启动HDFS需要先进行格式化,使用如下命令:

# $HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>
hdfs namenode -format

启动NameNode

[hadoop@localhost ~]$ hdfs --daemon start namenode
[hadoop@localhost ~]$ jps
6355 NameNode
6424 Jps

**TIPS:**如果启动失败,可以查看%HADOOP_HOME%/logs/ 目录下的日志进行错误排查。

启动DataNode

[hadoop@localhost hadoop-3.2.1]$ hdfs --daemon start datanode
[hadoop@localhost hadoop-3.2.1]$ jps
6544 Jps
6355 NameNode
6477 DataNode

NameNode和DataNode启动之后,在浏览器中输入http://172.16.250.234:50070访问HDFS的管理界面。


20200213145604770.png


接下来就该启动Yarn了,在启动Yarn之前需要先对本机进行SSH免密码登录设置,否则执行 start-yarn.sh 命令启动nodemanagers 的时候会提示如下错误。

[hadoop@localhost logs]$ start-yarn.sh
Starting resourcemanager
Starting nodemanagers
hadoop001: Warning: Permanently added 'hadoop001' (ECDSA) to the list of known hosts.
hadoop001: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

本机SSH免密码登录配置

1.关闭防火墙和SELinux(root权限)

Redhat使用了SELinux来增强安全,关闭的办法为:

a. 永久有效

修改 /etc/selinux/config 文件中的 SELINUX=enforcing 修改为 SELINUX=disabled ,然后重启。

b. 临时生效

setenforce 0

关闭防火墙的方法为:

开启:systemctl start firewalld.service

关闭:systemctl stop firewalld.service

防火墙开机自启动设置:

开启:systemctl enable iptables.service

禁止:systemctl disable iptables.service

2.配置sshd(root权限)

编辑 /etc/ssh/sshd_config 文件,使用命令:vi /etc/ssh/sshd_config ,去掉以下3行的 “#” 注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile? ? ? .ssh/authorized_keys

重启 sshd 服务,使用命令:systemctl restart sshd.service 。

3.生成秘钥(普通用户权限)

从 root 用户切换到hadoop 用户,可使用命令:su hadoop。然后,执行命令 ssh-keygen -t rsa来生成秘钥。无需指定口令密码,遇到询问直接回车,命令执行完毕后会在 hadoop 用户的家目录中(/home/hadoop/.ssh)生成两个文件:

  • id_rsa: 私钥
  • id_rsa.pub:公钥

4.将公钥导入到认证文件(普通用户权限)

使用命令:

cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

5.设置认证文件访问权限(普通用户权限)

chmod 700 /home/hadoop/.ssh
chmod 600 /home/hadoop/.ssh/authorized_keys


启动Yarn

[hadoop@localhost logs]$ start-yarn.sh
Starting resourcemanager
Starting nodemanagers
[hadoop@localhost logs]$ jps
8872 NameNode
10632 Jps
9257 DataNode
10170 ResourceManager
10284 NodeManager

启动成功之后,在浏览器中输入 http://172.16.250.240:8088 便可以查看YARN的管理界面了。

MapReduce测试

为了验证 hadoop是否安装成功,以及初体验一把MapReduce,接下来,我们以 Hadoop 安装包中自带的MapReduce 示例为例,简单统计一下 $HADOOP_HOME/etc/hadoop 目录下的配置文件中匹配 'dfs[a-z.]+'的字符串都有哪些以及它们在配置文件中出现了多少次。


警告:Hadoop3.2.1版本中etc/hadoop 目录下有一个 shellprofile.d 文件夹会导致测试失败,执行测试前记得删掉这个文件夹。

hdfs dfs -rm -r -skipTrash /input/hadoop/shellprofile.d

或者,在上传文件之前删除本地的 shellprofile.d 文件夹。

[hadoop@localhost ~]$ hdfs dfs -mkdir /input        # 在HDFS根目录下创建input目录
[hadoop@localhost ~]$ hdfs dfs -mkdir /output       # 在HDFS根目录下创建output目录
[hadoop@localhost ~]$ hdfs dfs -ls /                # 查看HDFS根目录下文件列表
Found 4 items
drwxr-xr-x   - hadoop supergroup          0 2020-02-13 15:01 /input
drwxr-xr-x   - hadoop supergroup          0 2020-02-13 14:57 /output
drwx------   - hadoop supergroup          0 2020-02-13 14:49 /tmp
drwxr-xr-x   - hadoop supergroup          0 2020-02-13 14:55 /user
# 将本地主机上的 hadoop 文件夹上传到 HDFS的 input目录
[hadoop@localhost ~]$ hdfs dfs -put /usr/local/hadoop-3.2.1/etc/hadoop /input
[hadoop@localhost ~]$ hdfs dfs -ls /input/hadoop    # 查看HDFS中/input/hadoop目录下文件列表
Found 32 items
-rw-r--r--   1 hadoop supergroup       8260 2020-02-13 15:13 /input/hadoop/capacity-scheduler.xml
-rw-r--r--   1 hadoop supergroup       1335 2020-02-13 15:13 /input/hadoop/configuration.xsl
# 此处省略其余 30个文件信息 
# 使用 hadoop 提供的mapreduce示例程序,统计上述32个文件中匹配'dfs[a-z.]+'的字符串出现的次数
[hadoop@localhost ~]$ hadoop jar /usr/local/hadoop-3.2.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep /input/hadoop /output/demo 'dfs[a-z.]+'
[hadoop@localhost ~]$ hdfs dfs -ls /output/demo   # 查看结果存放目录/output/demo 下的文件列表
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2020-02-13 15:19 /output/demo/_SUCCESS
-rw-r--r--   1 hadoop supergroup        331 2020-02-13 15:19 /output/demo/part-r-00000
# 你可以将结果文件目录从HDFS拷贝到本地主机的 /tmp/ 目录下
[hadoop@localhost ~]$ hdfs dfs -get /output/demo /tmp/
[hadoop@localhost ~]$ ls /tmp/demo/
part-r-00000  _SUCCESS
[hadoop@localhost ~]$ cat /tmp/demo/part-r-00000
5 dfs.audit.logger
3 dfs.logger
3 dfs.server.namenode.
2 dfs.audit.log.maxbackupindex
2 dfs.audit.log.maxfilesize
2 dfs.sh
1 dfshealth.html
1 dfsadmin
1 dfs.replication
1 dfs.namenode.servicerpc
1 dfs.namenode.rpc
1 dfs.namenode.name.dir
1 dfs.log
1 dfs.http.address
1 dfs.datanode.data.dir
1 dfs.namenode.ec.policies.max.cellsize
# 或者直接查看HDFS中mapreduce任务的统计结果
[hadoop@localhost ~]$ hdfs dfs -cat /output/demo/part-r-00000
# mapreduce任务执行完毕后的的统计结果内容如下:
5 dfs.audit.logger
3 dfs.logger
3 dfs.server.namenode.
2 dfs.audit.log.maxbackupindex
2 dfs.audit.log.maxfilesize
2 dfs.sh
1 dfshealth.html
1 dfsadmin
1 dfs.replication
1 dfs.namenode.servicerpc
1 dfs.namenode.rpc
1 dfs.namenode.name.dir
1 dfs.log
1 dfs.http.address
1 dfs.datanode.data.dir
1 dfs.namenode.ec.policies.max.cellsize


相关文章
|
6月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
1234 69
|
5月前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
2216 3
|
6月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
562 78
|
7月前
|
Linux 网络安全 Apache
针对在Centos/Linux安装Apache过程中出现的常见问题集锦
以上每个问题的解决方案应深入分析错误日志、系统消息和各种配置文件,以找到根本原因并加以解决。务必保持系统和Apache软件包更新到最新版本,以修复已知的bugs和安全漏洞。安装和管理Web服务器是一项需要细致关注和不断学习的任务。随着技术的发展,推荐定期查看官方文档和社区论坛,以保持知识的更新。
314 80
|
5月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
1095 16
|
6月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
532 10
|
7月前
|
人工智能 数据挖掘 Linux
Centos安装Python3.7(亲测可用)
本指南详细介绍了在基于Linux(以CentOS系统为例,使用yum包管理器)的系统上安装Python 3.7版本的完整流程。Python是一种广泛使用的高级编程语言,在各种领域如软件开发、数据分析、人工智能和区块链开发等都有着重要的应用。
678 2
|
8月前
|
机器人 Linux
CentOS 7系统中安装特定版本CMake 3.21.2的方法。
到这里,过程已经全部完成。如果你跟随上面的步骤来,那么你现在已经拥有了一个全新的CMake版本在你的CentOS 7系统上了。这个过程就像是你通过一系列仪式,唤醒了一个沉睡已久的古老机器人,它现在完全按照你的意愿来帮你构建和编译软件了。
631 18
|
6月前
|
运维 网络协议 Linux
CentOS下Bind服务的安装与故障排查
通过以上的步骤,您应该能够在CentOS系统上安装并配置BIND DNS服务,并进行基本的故障排查。
573 0
|
6月前
|
存储 Ubuntu Linux
安卓手机免root安装各种Linux系统:Ubuntu, Centos,Kali等
此外还可以安装Slackware、Archstrike等系统,还可以通过github查找方法安装更多有趣的东西。 昨日小编就是通过Termux安装的Kali Linux工具包。