在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

成功部署。

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Ubuntu搭建Hadoop平台完成分布式存储,需要进行以下步骤: 1. 安装Java环境 Hadoop需要Java环境支持,因此需要先安装Java环境。可以通过以下命令安装Java环境: ``` sudo apt-get update sudo apt-get install default-jdk ``` 2. 下载Hadoop 可以从官方网站下载最新版本的Hadoop。下载完成后,将下载的文件解压到任意位置。 3. 配置Hadoop 打开解压后的Hadoop安装目录,进入到conf文件夹中,复制一份模板配置文件: ``` cd hadoop-<VERSION>/conf cp mapred-site.xml.template mapred-site.xml cp core-site.xml.template core-site.xml cp hdfs-site.xml.template hdfs-site.xml ``` 修改配置文件中的相关参数,具体的配置方法可以参考Hadoop官方文档。一般需要修改的参数包括: - core-site.xml:配置Hadoop的默认文件系统、Hadoop的主机名等。 - hdfs-site.xml:配置Hadoop分布式文件系统的相关参数,如副本数、数据块大小等。 - mapred-site.xml:配置Hadoop的MapReduce框架的相关参数,如任务调度器等。 4. 配置SSH无密码登录 为了方便管理,需要配置SSH无密码登录。可以使用以下命令生成SSH密钥: ``` ssh-keygen -t rsa ``` 然后将公钥拷贝到每个Hadoop节点上: ``` ssh-copy-id -i ~/.ssh/id_rsa.pub user@<REMOTE-HOST> ``` 5. 启动Hadoop集群 启动Hadoop集群需要先格式化Hadoop分布式文件系统,可以使用以下命令进行格式化: ``` bin/hdfs namenode -format ``` 然后启动Hadoop集群: ``` sbin/start-all.sh ``` 启动完成后,可以通过以下命令查看Hadoop集群的状态: ``` jps ``` 如果成功启动,应该能够看到以下进程: ``` NameNode DataNode SecondaryNameNode ResourceManager NodeManager ``` 6. 测试Hadoop集群 最后可以通过运行一个简单的Hadoop任务来测试Hadoop集群的运行情况。可以使用以下命令运行一个简单的WordCount任务: ``` bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-<VERSION>.jar wordcount /input /output ``` 其中,/input是输入文件夹的路径,/output是输出文件夹的路径。如果任务成功完成,可以在输出文件夹中看到计算结果。 以上就是在Ubuntu搭建Hadoop平台完成分布式存储的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值