handoop

Hadoop Linux 版本的下载地址主要有以下几个:

  • Apache Hadoop 官方网站Apache Hadoop ,该网站提供了 Hadoop 的各个版本的下载,包括最新版本以及历史版本等,用户可以根据自己的需求选择合适的版本进行下载3.
  • Apache 软件基金会存档网站https://archive.apache.org/dist/hadoop/common/ ,这里也汇集了 Hadoop 的众多版本,方便用户查找和下载旧版本的 Hadoop4.

以下是在 Linux 系统中加载 JDK8 的详细步骤:

下载 JDK8 安装包

  • 前往 Oracle 官网下载对应 Linux 版本的 JDK8 安装包,官网下载地址为 Java Downloads | OracleJava Downloads | Oracle) ,需要登录 Oracle 账号才能下载4.
  • 也可以通过其他途径获取,如国内的一些镜像站点等,但要注意安装包的完整性和安全性134.

安装 JDK8

  • 创建安装目录:使用 mkdir 命令创建一个用于存放 JDK 的目录,例如 mkdir /usr/local/java
  • 解压安装包:将下载好的 JDK8 压缩包上传至 Linux 服务器,并使用 tar 命令解压到指定目录,如 tar -zxvf jdk-8u341-linux-x64.tar.gz -C /usr/local/java/ ,解压后会得到一个类似 jdk1.8.0_341 的文件夹.

配置环境变量

  • 编辑 /etc/profile 文件,可以使用 vi 或 vim 命令,如 vi /etc/profile
  • 在文件末尾添加以下内容,注意将 JAVA_HOME 的路径替换为实际的 JDK 安装路径:

bash

export JAVA_HOME=/usr/local/java/jdk1.8.0_341
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

使配置生效

  • 执行 source /etc/profile 命令,使配置的环境变量立即生效

测试是否安装成功

  • 在终端输入 java -version 命令,如果能正确显示 JDK8 的版本信息,则说明安装和加载成功

以下是在 Linux 系统中解压和安装 Hadoop - 3.3.1.tar.gz 的步骤:

一、解压 Hadoop 压缩包

1、确保你已经将hadoop - 3.3.1.tar.gz文件下载到了你的 Linux 系统中。通常可以使用wget命令从官方网站下载,例如(假设下载到/home/user/Downloads目录下):

  wget https://downloads.apache.org/hadoop/common/hadoop - 3.3.1.tar.gz -P /home/user/Downloads                                         上述命令中的-P参数指定了下载文件的保存路径。

2、打开终端,切换到hadoop - 3.3.1.tar.gz文件所在的目录。例如,如果文件在/home/user/Downloads目录下,使用命令:

   cd /home/user/Downloads

3、使用tar命令解压文件。命令如下:

        tar -zxvf hadoop - 3.3.1.tar.gz                                                                                          其中,-z表示使用gzip格式解压,-x表示解压,-v表示显示解压过程的详细信息,-f表示指定要解压的文件名。

4、解压完成后,会得到一个hadoop - 3.3.1目录。你可以将这个目录移动到合适的位置,比如/usr/local目录下(需要有足够的权限,可能需要使用sudo命令)。命令如下:

   sudo mv hadoop - 3.3.1 /usr/local 

二、配置环境变量

1、打开~/.bashrc文件(这是用户级别的环境变量配置文件),可以使用以下命令:      

vi ~/.bashrc

如果你更喜欢使用其他文本编辑器,如nano,可以将vi替换为nano

2、在~/.bashrc文件的末尾添加以下内容:

export HADOOP_HOME=/usr/local/hadoop - 3.3.1

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

这些内容的作用是设置HADOOP_HOME环境变量为 Hadoop 的安装目录,并将Hadoopbinsbin目录添加到系统的PATH环境变量中,这样就可以在任何目录下方便地使用 Hadoop 命令。

3、保存并退出~/.bashrc文件。在vi编辑器中,按Esc键,然后输入:wq保存并退出。

4、使环境变量配置生效,在终端中输入:source ~/.bashrc

三、配置 Hadoop 核心文件(以单机模式为例)

1、配置hadoop - env.sh文件

打开$HADOOP_HOME/etc/hadoop/hadoop - env.sh文件,使用命令:

vi $HADOOP_HOME/etc/hadoop/hadoop - env.sh

找到export JAVA_HOME这一行,将其修改为你的 Java 安装路径。例如,如果 Java 安装在/usr/lib/jvm/java - 8 - openjdk - amd64,则修改为export JAVA_HOME=/usr/lib/jvm/java - 8 - openjdk - amd64

2、配置core - site.xml文件

打开$HADOOP_HOME/etc/hadoop/core - site.xml文件,在<configuration>标签内添加以下内容:

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
</property>

这里配置了 Hadoop 的默认文件系统为 HDFS(Hadoop Distributed File System),并且指定了名称节点(NameNode)监听的地址为localhost:9000

3、配置hdfs - site.xml文件(针对 HDFS)

打开$HADOOP_HOME/etc/hadoop/hdfs - site.xml文件,在<configuration>标签内添加以下内容:

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

     这里配置了 HDFS 数据块的副本数量为 1。因为是单机模式,所以设置为 1 即可。

4、配置mapred - site.xml文件(针对 MapReduce)

打开$HADOOP_HOME/etc/hadoop/mapred - site.xml文件,在<configuration>标签内添加以下内容:

<property>
    <name>mapreduce.framework.registry</name>
    <value>yarn</value>
</property>

这表示将 MapReduce 任务调度到 YARN(Yet Another Resource Negotiator)上执行

5、配置yarn - site.xml文件(针对 YARN)

打开$HADOOP_HOME/etc/hadoop/yarn - site.xml文件,在<configuration>标签内添加以下内容:

<property>
    <name>yarn.nodemanager.aux - services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>localhost</value>
</property>

这些配置设置了 YARN 的节点管理器(NodeManager)的辅助服务以及资源管理器(ResourceManager)的主机名。

四、格式化 HDFS(首次安装)

1、在安装和配置完成后,需要格式化 HDFS。使用命令:

 hdfs namenode - format

这个操作会初始化 HDFS 的文件系统元数据,创建一些必要的目录和文件。注意,这个操作只需要在首次安装或者需要重新初始化 HDFS 时进行。

五、启动 Hadoop 服务

1、启动 HDFS 服务,使用命令:

  start-dfs.sh

     这会启动名称节点(NameNode)、数据节点(DataNode)等相关服务。

如果启动start-dfs.sh,出现下面
 

异常1:

localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

Starting datanodes localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). Starting secondary namenodes

[localhost.localdomain] localhost.localdomain: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

可能公私密钥问题

su hadoop 

将生成的SSH的公钥加入目标机器的SSH目录下: 

~/.ssh$ cat ./id_rsa.pub >> ./authorized_keys

然后执行   start-dfs.sh 仍然报错 ,最后发现是权限问题

localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). Starting datanodes

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys 
sudo chown -R hadoop:hadoop /usr/local/hadoop-3.3.1/logs
sudo chmod -R 755 /usr/local/hadoop-3.3.1/logs

a、

sudo useradd -m hadoop -s /bin/bash 创建新用户
sudo passwd hadoop 为用户设置密码
sudo adduser hadoop sudo 为用户设置管理权限

b、

cd ~/.ssh

ssh-keygen -t rsa

2、启动 YARN 服务,使用命令

 start-yarn.sh

 这会启动资源管理器(ResourceManager)和节点管理器(NodeManager)等相关服务。

现在,Hadoop - 3.3.1 已经安装并启动成功,你可以开始使用它进行数据处理等相关操作。如果是在集群环境中安装,还需要对多台机器进行相应的配置和网络设置等操作。


 

---------------------------------------------------------------------------------------------------------------------------------

执行命令  hadoop fs -ls /user/hadoop/input  出现异常

ls: Call From localhost/127.0.0.1 to localhost:9000 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

然后,在root账户下执行iptables命令:

iptables -I INPUT -p tcp -s 127.0.0.1 --dport 9000 -j ACCEPT

localhost: ERROR: Unable to write in /tmp. Aborting.
Starting datanodes
localhost: ERROR: Unable to write in /tmp. Aborting.
Starting secondary namenodes [localhost.localdomain]
localhost.localdomain: ERROR: Unable to write in /tmp. Aborting.

sudo chmod 1777 /tmp


 

sudo chown -R hadoop:hadoop /tmp/hadoop-hadoop/dfs/name

start-dfs 未启动成功 最好看日志

一、

  • HDFS 服务未完全启动或启动失败
    • 检查服务状态
      • 首先检查 HDFS 相关服务是否真正启动成功。可以通过查看日志来确定,NameNode 的日志通常位于$HADOOP_HOME/logs/hadoop - <username>-namenode - <hostname>.log(/usr/local/hadoop-3.3.1/logs/)。在这个日志文件中,查找是否有任何启动错误或异常。
      • 同时,也可以使用命令jps来查看 Hadoop 进程。正常情况下,应该看到NameNodeDataNode等相关进程在运行。如果没有看到这些进程,说明 HDFS 服务没有正确启动。
    • 重新启动服务
      • 如果服务没有启动成功,可以尝试重新启动 HDFS。先停止正在运行的(可能是错误启动的)服务,使用命令stop - dfs.sh。然后再重新启动,使用start - dfs.sh

二  问题分析

出现 “java.io.IOException: NameNode is not formatted.” 这个异常,意味着 Hadoop 分布式文件系统(HDFS)的 NameNode 所在的存储区域还没有进行格式化操作。NameNode 需要有一个格式化后的状态来存储和管理文件系统的元数据信息,比如文件和目录的命名空间、数据块到 DataNode 的映射关系等,若未格式化,就无法正确地从磁盘加载这些必要的元数据,从而导致启动失败

可能原因及解决方案

  1. 首次安装或重新部署未格式化                                                                                                    a新搭建环境情况                                                                                                                                   如果是第一次安装 Hadoop 或者重新部署了 Hadoop 环境,在启动 NameNode 之前确实需要对其进行格式化操作。格式化操作会创建 NameNode 所需的初始目录结构以及一些元数据相关的初始文件等。                                                                                                         b 执行格式化命令(谨慎操作) 以运行 Hadoop 的用户(通常是 hadoop 用户,若没改过默认配置)身份,在命令行中执行如下格式化命令:
    hdfs namenode -format

    不过要注意,格式化操作会清除之前 NameNode 存储目录(由配置文件 hdfs-site.xml 中 dfs.namenode.name.dir 属性指定的目录)下的已有元数据内容,所以如果目录中有重要的、需要保留的数据,要提前做好备份工作。

  2. 存储目录配置变更或数据丢失后未重新格式化                                                                           a、存储目录更改情况:若修改了 hdfs-site.xml 文件里 dfs.namenode.name.dir 属性所指向的存储目录路径,新的目录下没有之前格式化生成的必要元数据结构和文件,那么 NameNode 启动时同样会报未格式化的错误。                                                                           b、数据丢失或损失情况:例如存储 NameNode 元数据的磁盘出现故障,导致数据丢失,或者由于误操作删除了部分关键的元数据文件等情况发生后,也会出现此报错。                         c、对应解决办法:  首先确保新的存储目录(如果有变更的话)配置正确且具备合适的权限(运行 Hadoop 的用户能对其读写),然后按照上述的格式化命令进行格式化操作(同样要提前备份好可能存在的重要数据),使得 NameNode 能在新的或修复后的存储目录下重新生成正确的元数据结构,进而可以正常启动。 

  3. 误操作或不恰当的重启尝试                                                                                                      a、多次重复格式化情况:有时候在排查问题过程中,可能多次重复执行了格式化操作,又没有正确地恢复之前备份的数据(如果有备份的话),导致后续启动时仍然报这个错误,因为每次格式化都是重新初始化元数据结构,可能破坏了原有的正常启动状态。                          b、解决思路:如果存在这种情况,需要仔细回顾操作过程,确认是否有备份的可用元数据,若有,将其恢复到正确的存储目录(由 dfs.namenode.name.dir 指定)下,并且检查存储目录的完整性和权限情况,再尝试启动 NameNode;若没有备份,那就只能重新进行格式化操作,后续重新上传数据等,恢复整个 HDFS 的正常运行状态。                                                       在执行完相应的解决措施(比如格式化或者恢复数据等操作)后,重新启动 Hadoop 的 HDFS 相关服务(先执行 stop-dfs.sh 关闭服务,再执行 start-dfs.sh 启动服务),观察是否还会出现同样的报错信息,以此来进一步确认问题是否得到解决。             

  4. 三   问题:hadoop fs -put /local/path/to/file /user/hadoop/input 中 /user/hadoop/input ,疑问:linux系统重没有 user目录,如何解释        ?                                                                     HDFS 有自己的目录结构和命名规则,在 HDFS 中,/user是用于存储用户相关数据的默认顶级目录,类似于 Linux 系统中/home目录用于存储用户的个人文件。                                    创建上级目录:尝试创建/user/hadoop的上级目录。可以使用hadoop fs -mkdir -p命令来创建多级目录结构。例如,先创建/user目录(如果不存在),再创建/user/hadoop目录:

    hadoop fs -mkdir -p hdfs://localhost:9000/user
    hadoop fs -mkdir -p hdfs://localhost:9000/user/hadoop

    -p参数表示递归创建目录,如果父目录不存在,则先创建父目录。                                       检查 HDFS 服务状态和配置文件:                                                                                                 a 使用jps命令检查 HDFS 相关进程(如NameNodeDataNode)是否正常运行。如果这些进程没有正常运行,可能会导致无法正确创建目录。例如,如果NameNode进程不存在,可能是由于配置错误或者服务启动失败,需要检查hdfs - site.xmlcore - site.xml等配置文件,确保NameNode的配置参数正确,如dfs.namenode.name.dir(指定NameNode存储元数据的目录)和fs.defaultFS(定义 HDFS 的默认文件系统路径)等参数。                                            b 同时,查看hdfs - site.xml文件中的dfs.permissions.enabled参数。如果该参数设置为true(默认情况),可能会对目录的创建和访问权限有更严格的要求。确保运行 Hadoop 的用户(通常是hadoop用户)有足够的权限来创建目录。如果需要,可以暂时将该参数设置为false进行测试,但在生产环境中要谨慎使用这种方式,因为这可能会带来安全风险。      确认Hadoop 命令行工具配置正确                                                                                                a 检core - site.xmlfs.defaultFS参数的配置,确保命令行工具(hadoop fs)所使用的 HDFS 路径与实际的 HDFS 服务路径一致。例如,如果fs.defaultFS配置为hdfs://localhost:9000,那么命令行工具才能正确地与这个 HDFS 服务进行交互来创建目录。如果配置错误,修改为正确的路径后,重新尝试创建目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈涛Atlas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值