【安装包】
官网地址:Apache Hadoop
安装文档:Apache Hadoop 3.3.1 – Hadoop: Setting up a Single Node Cluster.
【环境介绍】
- Linux:CentOS Linux release 8.0.1905 (Core)
- Java版本:jdk1.8.0_211
- Hadoop版本:hadoop-3.2.1.tar.gz
- Kibana版本:kibana-7.8.0.tar.gz
- Logstash版本:logstash.tar.gz
【实现ssh免密码登录】
由于Hadoop需要使用SSH进行通信,因此需要在Linux操作系统上安装SSH。SSH是一种通过网络连接提供安全的加密连接的客户端服务。
安装过程略。
SSH作为一个安全通信协议,需要在通信的时候输入密码。
操作环境:
机器 | 操作系统 | IP |
Node-1 | CentOS 8 | 172.20.49.155 |
Node-2 | CentOS 8 | 172.20.49.138 |
1、Node-1机器
执行终端命令“ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa”生成公钥与私钥对。
将本机的公钥复制到远程机器,即Node-2机器的authorized_keys文件中。
ssh-copy_id root@172.20.33.138
执行终端命令“ssh root@172.20.49.138”,测试是否需要输入密码。
- Node-2机器
与操作1步骤一致,只需修改相应的IP地址即可。如下所示。
# 生成公钥与私钥对
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# 复制本机的公钥到远程机器的authorized_keys文件中
ssh-copy-id root@172.20.49.155
服务器环境如下表所示:
机器 | 操作系统 | IP |
Node-1 | CentOS 8 | 172.20.49.138 |
Node-2 | CentOS 8 | 172.20.49.139 |
Node-3 | CentOS 8 | 172.20.49.140 |
注意:请先在上述三台服务器上安装JDK1.8、配置三台机器间实现免密通信。
查看OS版本:
cat /etc/redhat-release
将本地下载完成的hadoop-3.2.1.tar.gz压缩包上传至CentOS服务器,命令如下:
scp hadoop-3.2.1.tar.gz root@172.20.49.138:/usr/local/soft
scp hadoop-3.2.1.tar.gz root@172.20.49.139:/usr/local/soft
scp hadoop-3.2.1.tar.gz root@172.20.49.140:/usr/local/soft
接下来,在三台服务器上做同样的操作,只需修改相应的路径即可。
进入/usr/local/soft目录下,解压hadoop到指定目录。
tar -zxvf hadoop-3.2.1 -C /usr/local/softins
进入/usr/local/softins/hadoop-3.2.1目录,查看Hadoop的目录结构。
【hadoop目录】
hadoop目录说明:
- bin:hadoop可执行的脚本文件,比如hadoop,mapreduce,yarn;
- sbin:系统相关的一些执行脚本,比如hadoop的相关启动/关闭脚本;
- lib:本地库,本地平台的效率实现;
- etc:相关配置文件;
- libexec:执行相关文件;
- include:本地库相关;
- share:jar包,开发相关;
- share/doc:开发文档;
编辑/etc/profile文件,配置java和hadoop的环境变量。
vim /etc/profile
配置内容如下:
# java
export JAVA_HOME=/usr/java/jdk1.8.0_291-amd64
export CLASSPATH=./$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
# Hadoop
export HADOOP_HOME=/usr/hadoop-3.2.1
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
# hadoop-3.2.1
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
Export YARN_NODEMANAGER_USER=root
其中# hadoop-3.2.1部分对hadoop-3.2.1来说必须配置,否则启动报错。
执行命令使配置文件立即生效。
source /etc/profile
执行终端命令“hadoop version”进行安装测试。所示的Hadoop版本信息,则表示Hadoop安装完成。
【配置参数】
- 修改hadoop-env.sh,配置JAVA_HOME的值,使其值指向jdk的位置。
cd /usr/local/softins/hadoop/hadoop-3.2.1
vim etc/hadoop/hadoop-env.sh
取消并修改export JAVA_HOME=jdk安装位置,如下所示。
export JAVA_HOME=/usr/local/softins/jdk/jdk1.8.0_241
2.修改core-site.xml文件。
vim etc/hadoop/core-site.xml
添加内容如下所示:
<configuration>
<!--指定HADOOP所使用的文件系统schema(URI) NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!--指定HADOOP运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
执行终端命令:
mkdir -p /usr/local/data/hadoop-3.2.1/tmp
3.修改hdfs-site.xml文件。
vim etc/hadoop/hdfs-site.xml
编辑内容如下所示:
<configuration>
<!--指定HDFS副本的数量-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file: /opt/hadoop /tmp/dfs/data</value>
</property>
</configuration>
执行终端命令:
mkdir -p /usr/local/data/hadoop-3.2.1/tmp/dfs/name
mkdir -p /usr/local/data/hadoop-3.2.1/tmp/dfs/data
4.修改mapred-site.xml
vim etc/hadoop/mapred-site.xml
编辑内容如下所示:
<configuration>
<!--指定mapreduce运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
【启动Hadoop】
- 初始化文件服务,执行终端命令:
cd /usr/local/softins/hadoop/hadoop-3.2.1/
hdfs namenode -format
- 若出现下列语句就表示hadoop文件服务初始化成功。
common.Storage: Storage directory /usr/local/data/hadoop-3.2.1/tmp/dfs/name has been successfully formatted.
执行终端命令:
start-dfs.sh
使用jps查看进程情况。
在本地浏览器上输入链接地址“http://172.20.49.139:9870”,访问Hadoop服务。如果出现如下图则表示hadoop已启动。