Ubuntu 18.04.1 LTS (on VirtualBox)
Apache hadoop-3.3.1.tar.gz(2021 Jun 15)
JAVA 8 (openjdk version "1.8.0_162")
--
注,2020年7月写过一篇,今天,重新启程。
Hadoop下载地址:
https://hadoop.apache.org/releases.html
选择其中的 Binary download,点击即开始下载(近600MB)。
本文记录 单机安装Hadoop的步骤,参考官文:
Hadoop: Setting up a Single Node Cluster.
目录
5、配置伪分布式模式(pseudo-distributed mode)
7.1 etc/hadoop/mapred-site.xml
1、建立hadoop用户
# 新建用户 hadoop
sudo useradd -m hadoop -s /bin/bash
# 添加到sudo组(管理员权限)
sudo adduser hadoop sudo
# 设置hadoop密码
passwd hadoop
试验时设置密码为 111。
新建用户后,多了一个 hadoop组( cat /etc/group),sudo组 下多了一个 hadoop:
$ cat /etc/group | grep sudo
sudo:x:27:user,hadoop
/home下多了 hadoop目录:
$ ls -l /home | grep hadoop
drwxr-xr-x 6 hadoop hadoop 4096 12月 4 12:08 hadoop
疑问:
hadoop 用户在 使用Hadoop的作用是什么?
2、配置免密登录
安装了 ssh。
修改 /etc/profile ,添加:
export PDSH_RCMD_TYPE=ssh
切换到 hadoop 用户,进入其 home 目录,执行ssh-keygen:
# 输入后,一直点回车
ssh-keygen
# 官文的
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
在 /home/hadoop 下生成了 .ssh 及其中的三个文件:
id_rsa、id_rsa.pub、known_hosts
执行命令,拷贝 id_rsa.pub 的内容到 authorized_keys 文件(不存在也没关系,会自动建立):
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
此时,执行 ssh localhost 就可以免密登录了。
疑问:
免密登录 的作用是什么?
下面配置 单机伪分布式模式 时需要。
3、下载&解压
下载得到 hadoop-3.3.1.tar.gz,放到 /home/hadoop/ws 中;
进入/home/hadoop/ws,原地解压:
tar zxvf hadoop-3.3.1.tar.gz
解压得到:
$ ll hadoop-3.3.1/
total 124
drwxr-xr-x 11 hadoop hadoop 4096 12月 4 11:34 ./
drwxrwxr-x 3 hadoop hadoop 4096 12月 4 11:34 ../
drwxr-xr-x 2 hadoop hadoop 4096 12月 4 11:34 bin/
drwxr-xr-x 3 hadoop hadoop 4096 12月 4 11:34 etc/
drwxr-xr-x 2 hadoop hadoop 4096 12月 4 11:34 include/
drwxr-xr-x 3 hadoop hadoop 4096 12月 4 11:34 lib/
drwxr-xr-x 4 hadoop hadoop 4096 12月 4 11:34 libexec/
-rw-rw-r-- 1 hadoop hadoop 23450 12月 4 11:34 LICENSE-binary
drwxr-xr-x 2 hadoop hadoop 4096 12月 4 11:34 licenses-binary/
-rw-rw-r-- 1 hadoop hadoop 15217 12月 4 11:34 LICENSE.txt
drwxrwxr-x 2 hadoop hadoop 4096 12月 4 12:08 logs/
-rw-rw-r-- 1 hadoop hadoop 29473 12月 4 11:34 NOTICE-binary
-rw-rw-r-- 1 hadoop hadoop 1541 12月 4 11:34 NOTICE.txt
-rw-rw-r-- 1 hadoop hadoop 175 12月 4 11:34 README.txt
drwxr-xr-x 3 hadoop hadoop 4096 12月 4 11:34 sbin/
drwxr-xr-x 4 hadoop hadoop 4096 12月 4 11:34 share/
本试验用到过 etc、bin、sbin、logs 三个目录下的文件。
4、修改配置
4.1 etc/hadoop/hadoop-env.sh
末尾添加:
export JAVA_HOME=/usr
说明:
为什么是 /usr?使用 whereis java 得到的结果如下:
$ whereis java
java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz
其实,可以进一步追踪 java命令在哪里:/usr/bin/java 只是一个 符号链接。
$ ls -l /usr/bin | grep java
lrwxrwxrwx 1 root root 22 5月 26 2021 java -> /etc/alternatives/java
lrwxrwxrwx 1 root root 23 5月 26 2021 javac -> /etc/alternatives/javac
lrwxrwxrwx 1 root root 25 5月 26 2021 javadoc -> /etc/alternatives/javadoc
lrwxrwxrwx 1 root root 23 5月 26 2021 javah -> /etc/alternatives/javah
lrwxrwxrwx 1 root root 23 5月 26 2021 javap -> /etc/alternatives/javap
# 更进一步:/etc/alternatives/java 也是一个 符号链接
/etc/alternatives$ ls -l | grep java
lrwxrwxrwx 1 root root 46 5月 26 2021 java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
...
进一步跟踪,这里的 JAVA_HOME 应该配置为:
/usr/lib/jvm/java-8-openjdk-amd64
更改后,bin/hadoop命令仍然可用,说明是对的。
配置完毕,此时,可以使用 bin/hadoop 命令了。