参考文章:
https://dblab.xmu.edu.cn/blog/4193/
环境说明:
我使用的是在VM中搭建Ubuntu20.04.6 64位。
内存大小:4GB
硬盘大小:50GB(请勿太小,可能不够用)
用户名:Hadoop(可以跳过上述文章里的创建hadoop用户)
创建Hadoop用户(若用户名不是Hadoop,需要创建,若用户名是Hadoop则跳过)
#创建用户Hadoop
sudo useradd -m Hadoop -s /bin/bash
#设置密码:输入两次密码
sudo passwd Hadoop
#增加管理员权限
sudo adduser hadoop sudo
返回登录界面(右上角齿轮,选择注销),在登录界面中选择Hadoop用户进行登录。
更新apt
sudo apt-get update
系统提示“cuser is not in the sudoers file时。解决方法:
方法一:网址里面的方法
sudo adduser hadoop sudo
方法二:上面的方法不可以:
其实就是没有权限进行sudo,解决方法如下(这里假设我们的用户名是Hadoop):
1.切换到超级用户:$ su
2.打开/etc/sudoers文件:$vi /etc/sudoers
3.修改文件内容:
找到“root ALL=(ALL) ALL”一行,在下面插入新的一行,内容是“HadoopALL=(ALL) ALL”,
然后在vi键入命令“wq!”保存并退出。
注:这个文件是只读的,不加“!”保存会失败。
4.退出超级用户:$ exit
5.可以尽情使用sudo了。
安装SSH、配置SSJ无密码登
搭建hadoop集群为什么要设置SSH无密码登录?
Hadoop依赖于分布式环境中的节点自动执行任务,在搭建Hadoop集群的时候,SSH无密码登录可以使得各个节点之间相互通信(主节点启动,停止,监控从节点时)不需要人为干预,能够使得主节点能够通过SSH远程执行命令(停止,启动Hadoop进程)。
Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
sudo apt-get install openssh-server
设置无密码登录:
ssh localhost
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授权
现在再使用ssh localhost
命令,无需输入密码就可以直接登陆了。
安装java环境
在虚拟机中安装百度网盘:打开虚拟机的火狐,打开链接 可以点击这里到百度云盘下载JDK1.8安装包(提取码:ziyu)
打开软件,点击下载jdk-8u........gz文件,会提示先下载百度网盘,点击下载.deb版本的,下载好后如图
如果你已经下载了 `baidunetdisk4.17/7_amd64.deb` 文件,这是百度网盘的 Debian 包,可以直接在 Ubuntu 或其他基于 Debian 的系统上安装。
安装步骤:
1. 使用 `dpkg` 安装 `.deb` 文件
你可以通过 `dpkg` 命令来安装这个 `.deb` 文件:
sudo dpkg -i baidunetdisk4.17/7_amd64.deb
这会解压并安装该百度网盘客户端。
2. 解决依赖问题(如果有)
如果安装过程中遇到依赖性问题,可以使用以下命令来解决缺失的依赖:
sudo apt --fix-broken install
这个命令会自动安装所需的依赖项,并完成百度网盘的安装。
3. 启动百度网盘
安装完成后,可以通过应用程序菜单搜索 "Baidu Netdisk" 来启动百度网盘,登录进去后。
再次回到网页版的百度网盘就可以下载文件
在Linux命令行界面中,执行如下Shell命令(注意:当前登录用户名是hadoop):
cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u371-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u371-linux-x64.tar.gz -C /usr/lib/jvm #把JDK文件解压到/usr/lib/jvm目录下
下面继续执行如下命令,设置环境变量:
cd ~
vim ~/.bashrc
打开了hadoop这个用户的环境变量配置文件,请在这个文件的开头位置,添加如下几行内容:
Tips:vim编辑器使用方法:
输入i:进入编辑模式,把上面内容复制到文档里
按键盘左上角Esc键:退出编辑模式
输入:qw! :保存退出文件
保存.bashrc文件并退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效:
source ~/.bashrc
查看是否安装成功:
java -version
若出现下面,则安装成功:
hadoop@ubuntu:~$ java -version
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
安装Hadoop3.4.0
在Ubuntu的火狐浏览器里输入直接下载Hadoop3.4.0:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/hadoop-3.4.0.tar.gz
下载可能会很久(30min左右,中间不能熄屏,熄屏了要点击继续下载):
下载好之后:在Download里面可以看到Hadoop3.4.0.gz
进行下面操作
sudo tar -zxvf ~/下载/hadoop-3.4.0.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.4.0/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
#下载好后检查是否成功
cd /usr/local/hadoop
./bin/hadoop version
Hadoop单机配置(非分布式)
根据本文头链接,一步一步很简单的,放上成功截图。
Hadoop伪分布式配置
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
#输入命令行
gedit ./etc/hadoop/core-site.xml
#把文件中的:
<configuration>
</configuration>
#修改为:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
#输入命令行
gedit ./etc/hadoop/hdfs-site.xml
#同理修改成:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
修改后文件:
配置完成后,执行 NameNode 的格式化:
cd /usr/local/hadoop
./bin/hdfs namenode -format
成功标志:
接着开启 NameNode 和 DataNode 守护进程。
cd /usr/local/hadoop
./sbin/start-dfs.sh #start-dfs.sh是个完整的可执行文件,中间没有空格
红色为正常的表现。
若多次运行,出现绿色的报错,也不要惊慌。这个意思是DateNode已经启动了,不是有问题。 【报错信息:Starting namenodes on [localhost]
localhost:namenode is running as process 20609.Stop it first and ensure /tmp/hadoop-Hadoop-namenode.pid file is empty before retry.】
启动完成后,可以通过命令 jps
来判断是否成功启动,若成功启动则会列出如下进程:
jps
关闭 Hadoop
./sbin/stop-dfs.sh
下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行 ./sbin/start-dfs.sh
就可以!
参考链接: