Ubuntu22虚拟机部署Hadoop环境
环境
Ubuntu 22.04 64位 下载地址
Hadoop 3.3.6
Java 8
步骤
安装ssh
使用root权限。
1 | sudo -i |
更新软件包列表。
1 | apt-get update |
安装OpenSSH服务器,其中openssh-server是 OpenSSH 服务器的包名,它提供了 SSH 服务,允许你通过 SSH 协议远程连接到该系统。
1 | apt-get install openssh-server |
检查是否安装成功。执行 ps -e | grep ssh会列出所有与 SSH 相关的进程。运行结果中,sshd 是 SSH 服务守护进程,表示 OpenSSH 服务器正在运行。
1 | ps -e|grep ssh |
安装pdsh
pdsh是一个用于并行执行命令的工具,它可以在多台机器上同时执行相同的命令,非常适合在集群或多个远程主机上执行批量操作。
1 | apt-get install pdsh |
修改/etc/profile:
1 | cd /etc |
在该文件增加以下一行代码,设置SSH为pdsh远程命令的执行方式。
1 | export PDSH_RCMD_TYPE=ssh |
配置ssh密钥
生成一对 RSA 类型的 SSH 密钥,并且设置一个空的密码短语(即不使用密码)。
1 | ssh-keygen -t rsa -P "" |
可以看到密钥这些保存的位置在/root下面,跳转到/root目录下,输入ls -a可以看到.ssh文件
进入.ssh文件夹可以看到id_rsa和id_rsa.pub两个文件,前者保存着私钥,后者保存着公钥。
在.ssh文件夹中执行以下命令,这条命令将本地的 SSH 公钥 (id_rsa.pub) 添加到远程服务器上的authorized_keys文件中,从而允许使用对应的私钥进行 SSH 无密码登录。:
1 | cat id_rsa.pub >>authorized_keys |
测试SSH 服务是否正常工作。第一次连接会询问是否确定继续连接,输入yes就行了。
1 | ssh localhost |
安装Java 8
1 | apt-get install openjdk-8-jdk |
检查安装目录,如果是在根目录下安装,那么JAVA HOME路径应该是/usr/lib/jvm/java-1.8.0-openjdk-amd64,这个后面会用得到。
1 | cd /usr/lib/jvm/ |
设置java环境变量。
1 | vim ~/.bashrc |
通过echo $JAVA_HOME命令来检查环境变量是否设置正确,如果设置正确将会返回路径。
下载Hadoop
以下命令下载并解压了hadoop3.3.6,并将解压后的文件夹重命名为hadoop。我下载的路径是/home/Hadoop,这个路径后面用得到。
1 | cd /home |
执行完以上命令后应该能在/home/Hadoop/hadoop路径下看到以下文件。
配置Hadoop文件
进入/home/Hadoop/hadoop/etc/hadoop目录,对这个目录下的一些文件进行配置。具体代码含义在此不赘述。
配置hadoop-env.sh
使用vim hadoop-env.sh命令修改hadoop-env.sh文件。该文件中大部分都是注释起来的,不用管。可以直接在文件末尾增加以下内容。
1 | JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 |
配置core-site.xml
使用vim core-site.xml命令修改/home/Hadoop/hadoop/etc/hadoop目录下的core-site.xml文件。将文件中的configuration修改为以下内容。
1 | <configuration> |
配置hdfs-site.xml
与core-site.xml类似,在hdfs-site.xml中修改。注意只修改configuration内的内容。
1 | <configuration> |
配置mapred-site.xml
同理。
1 | <configuration> |
配置yarn-site.xml
同理。
1 | <configuration> |
配置bash.bashrc文件
进入/etc目录,在该目录下vim bash.bashrc,在这个文件中增加以下配置:
1 | export HADOOP_HOME="/home/Hadoop/hadoop" |
在修改完后,运行以下代码使其生效。
1 | source bash.bashrc |
格式化hdfs文件系统
该命令会清空并格式化 Hadoop 的 NameNode,并创建所需的元数据文件。仅在第一次配置或重新初始化文件系统时使用。
1 | hdfs namenode -format |
启动HDFS
通过以下命令来启动namenode、datanode、secondarynamenode
1 | HADOOP_HOME/bin/hdfs --daemon start namenode |
启动YARN集群。
1 | HADOOP_HOME/sbin/start-yarn.sh |
可通过http://localhost:8088访问ResourceManager Web UI
可通过http://localhost:50070访问NameNode Web UI
运行 MapReduce 作业
创建一个测试文件:
1
echo -e "hello world\nhello hadoop\nhadoop world" > input.txt
上传到 HDFS:
1
2hdfs dfs -mkdir -p /user/ubuntu/input
hdfs dfs -put input.txt /user/ubuntu/input运行 Hadoop 自带的 WordCount 示例
1
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /user/ubuntu/input /user/ubuntu/output
查看输出:
1
hdfs dfs -cat /user/ubuntu/output/part-r-00000
清理数据:
1
hdfs dfs -rm -r /user/ubuntu/output