我是靠谱客的博主 温暖萝莉,最近开发中收集的这篇文章主要介绍在Ubuntu22.04上搭建hadoop平台,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

工作需要搭建大数据平台,在自己的单机上部署Spark框架验证,需要先搭建hadoop平台。

Apache Hadoop 3.3.4 – Hadoop: Setting up a Single Node Cluster.icon-default.png?t=M85Bhttps://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html登陆hadoop官网,根据指示搭建单节点伪集群,过程如下:

1、安装Java。Hadoop版本是3.3.4,选择安装Java版本为Java8,Java11不支持编译Hadoop。

登陆Java Downloads | Oracle下载安装压缩包

解压压缩包到/usr/lib/jvm

sudo tar -zxvf jdk-8u351-linux-x64.tar.gz -C /usr/lib/jvm

然后  sudo gedit ~/.bashrc   添加环境变量。

添加环境变量后,source ~/.bashrc。

 设置默认jdk:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_351/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_351/bin/javac 300 sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.8.0_351/bin/jar 300 sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/jdk1.8.0_351/bin/javah 300 sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.8.0_351/bin/javap 300

 配置由哪个java提供服务,选择刚配置的。

sudo update-alternatives --config java

 

 然后查看安装版本,验证正确性。

安装java8成功。

 2、安装ssh,pdsh。

如果要使用可选的启动和停止脚本,则必须安装 ssh 并运行 sshd 以使用管理远程 Hadoop 守护进程的 Hadoop 脚本。此外,建议还安装 pdsh,以便更好地管理 ssh 资源

  $ sudo apt-get install ssh
  $ sudo apt-get install pdsh

3、获得Hadoop发行版。官方推荐地址Index of /hadoop/common/hadoop-3.3.4

4、cd到下载的Hadoop所在的文件夹,然后解压到/usr/local,并更改文件夹名字为Hadoop

sudo tar zxvf tmp/hadoop-3.3.4.tar.gz -C /usr/local
sudo mv ./hadoop-3.2.1/ ./hadoop

5、 修改用户权限

sudo chown -R hadoop:hadoop ./hadoop

6、根据官网指示,尝试输入

$ bin/Hadoop

将显示 Hadoop 脚本的使用文档。

 

7、 搭建伪分布式Pseudo-Distributed模式

更新/usr/local/hadoop/etc/Hadoop/core-site.xml

 更新/usr/local/hadoop/etc/Hadoop/hdfs-site.xml

 8、在/usr/local/hadoop/etc/hadoop/hadoop-env.sh中添加java环境变量

9、格式化

 sudo ./bin/hdfs namenode -format
 格式化成功

10、启动hadoop失败

 11、sudo gedit /etc/pdsh/rcmd_default

打开rcmd_default文件,并在文件中输入“ssh”,保存退出。

12、重新启动hadoop,在/usr/local/hadoop路径下,输入sbin/start-dfs.sh

 

提示ssh没有自动登陆,回到根目录下输入ssh localhost,需要输入密码,因此需要设置ssh为无密码登陆模式(参考Hadoop3.1.3安装教程_单机/伪分布式配置_Hadoop3.1.3/Ubuntu18.04(16.04)_厦大数据库实验室博客)

  1. exit # 退出刚才的 ssh localhost
  2. cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
  3. ssh-keygen -t rsa # 会有提示,都按回车就可以
  4. cat ./id_rsa.pub >> ./authorized_keys # 加入授权

13、输入sbin/start-dfs.sh,出现新的错误

给文件写入权限:sudo chmod 777 /usr/local/Hadoop/logs

14、输入sbin/start-dfs.sh,启动hadoop


输入jps

 

 15、现在解决namenode未启动的问题,查看/usr/local/Hadoop/logs中namenode.log

日志中错误提示,端口被占用。

 2022-12-20 17:36:31,709 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
java.net.BindException: Problem binding to [localhost:9000] java.net.BindException: Address already in use; For more details see:  http://wiki.apache.org/hadoop/BindException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:913)
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:809)
    at org.apache.hadoop.ipc.Server.bind(Server.java:648)
    at org.apache.hadoop.ipc.Server$Listener.<init>(Server.java:1233)
    at org.apache.hadoop.ipc.Server.<init>(Server.java:3127)
    at org.apache.hadoop.ipc.RPC$Server.<init>(RPC.java:1062)
    at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server.<init>(ProtobufRpcEngine2.java:468)
    at org.apache.hadoop.ipc.ProtobufRpcEngine2.getServer(ProtobufRpcEngine2.java:371)
    at org.apache.hadoop.ipc.RPC$Builder.build(RPC.java:853)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.<init>(NameNodeRpcServer.java:466)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createRpcServer(NameNode.java:865)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:771)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:1020)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:995)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1769)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1834)
Caused by: java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:438)
    at sun.nio.ch.Net.bind(Net.java:430)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:225)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.apache.hadoop.ipc.Server.bind(Server.java:631)
    ... 13 more
2022-12-20 17:36:31,710 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1: java.net.BindException: Problem binding to [localhost:9000] java.net.BindException: Address already in use; For more details see:  http://wiki.apache.org/hadoop/BindException

 

 新开一个终端,netstat -anp | grep 9000查看端口9000被谁占用,然后kill 9000。

重启hadoop,sbin/start-all.sh

成功部署。

 

最后

以上就是温暖萝莉为你收集整理的在Ubuntu22.04上搭建hadoop平台的全部内容,希望文章能够帮你解决在Ubuntu22.04上搭建hadoop平台所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部