Hadoop的安装包括3中模式:
(1)单机模式:只在一台机器上运行,存储采用本地文件系统,没有采用分布式文件系统HDFS。
(2)伪分布式模式:存储采用分布式文件系统HDFS,但是HDFS的节点和数据节点都在同一节点。
(2)分布式模式:存储采用分布式文件系统HDFS,而且HDFS的节点和数据节点位于不同机器上。

伪分布式下kafka的使用 伪分布式hadoop_hdfs

1 创建Hadoop用户

1.1 创建新用户

用户名为hadoopuser

[root@hadoop ~]# sudo adduser hadoopuser
[root@hadoop ~]# passwd hadoopuser
Changing password for user hadoopuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

1.2分配权限 设置Root(管理员)权限
1> 第一步:将用户加入管理权限组

  执行命令: usermod -a -G wheel hadoopuser

 2> 第二步,修改sudoers文件为可修改状态,如下:

      chmod -v u+w /etc/sudoers

 3> 第三步,修改sudoers文件,新增一行指令,使新用户和Root一样的权限,如下图所示:

      vim /etc/sudoers

      在 root    ALL=(ALL)       ALL 下       新增一行:hadoopuser    ALL=(ALL)       ALL

      注意:小细节:ypsroot  ALL=(ALL)    NOPASSWD:   ALL         可以让ypsroot账号在操作时不输入密码!(nopasswd:)

    wq保存即可;

    

     **在使用的时候,记住指令前面要加 sudo 

    上面我们修改sudoers文件为可修改,此时我们应该重新把它修改为只读模式:

 4> 执行如下命令: chmod -v u-w /etc/sudoers 

 

解压 hadoop-3.2.1.tar.gz

cd  /usr/local

tar   -zxvf   hadoop-3.2.1.tar.gz

查看hadoop版本号:hadoop version

伪分布式配置

在单个节点(一台机器上)以伪分布式的方式运行。

修改配置文件

cd    /usr/local/hadoop-3.2.1/etc/hadoop

修改core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml文件

core-site.xml:
<configuration>
         <property>
                 <name>fs.defaultFS</name>
                 <value>hdfs://localhost:9000</value>
         </property>
         <property>
                 <name>hadoop.tmp.dir</name>
                 <value>file:/usr/local/hadoop-3.2.1/hdfs-tmp</value>
                 <description>Abase for other temporary directories.</description>
         </property>
 </configuration>
  • hadoop.tmp.dir用于保存临时文件,如果没有配置这个参数,则默认使用的临时目录为/tmp/hadoo-hadoop,这个目录在Hadoop重启后会被系统清理掉。
  • fs.defaultFS用于指定HDFS的访问地址。
<configuration>
         <property>
                 <name>dfs.namenode.secondary.http-address</name>
                 <value>localhost:50090</value>
         </property>
         <property>
                 <name>dfs.namenode.name.dir</name>
                 <value>file:/usr/local/hadoop-3.2.1/file-tmp/dfs/name</value>
         </property>
         <property>
                 <name>dfs.datanode.data.dir</name>
                 <value>file:/usr/local/hadoop-3.2.1/file-tmp/dfs/data</value>
         </property>
         <property>
                 <name>dfs.replication</name>
                 <value>1</value>
         </property>
 </configuration>
  • dfs.replicaion:指定副本数量,在分布式文件系统中,数据通常会被冗余的存储多份,以保证可靠性和安全性,但是这里用的是伪分布式模式,节点只有一个,也有就只有一个副本。
  • dfs.namenode.name.di:设定名称节点元数据的保存目录
  • dfs.datanode.data.dir:设定数据节点的数据保存目录
mapred-site.xml:
<configuration>
         <property>
                 <name>mapreduce.framework.name</name>
                 <value>yarn</value>
         </property>
         <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
         </property>
         <property>
             <name>mapreduce.jobhistory.address</name>
             <value>localhost:10020</value>
         </property>
         <property>
             <name>mapreduce.jobhistory.webapp.address</name>
             <value>localhost:19888</value>
         </property>
        <property>
             <name>yarn.app.mapreduce.am.env</name>
             <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/hdfs-tmp</value>
         </property>
         <property>
             <name>mapreduce.map.env</name>
             <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/hdfs-tmp</value>
         </property>
         <property>
             <name>mapreduce.reduce.env</name>
             <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.1/hdfs-tmp</value>
         </property>
 </configuration>
yarn-site.xml:
<configuration>
 <!-- Site specific YARN configuration properties -->
         <property>
                 <name>yarn.resourcemanager.hostname</name>
                 <value>localhost</value>
         </property>
         <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
         </property>
         <property>
                  <name>yarn.resourcemanager.webapp.address</name>
                  <value>localhost:8088</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.scheduler.address</name>
                  <value>localhost:8030</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.address</name>
                  <value>localhost:8032</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.resource-tracker.address</name>
                  <value>localhost:8031</value>
          </property>
          <property>
                  <name>yarn.resourcemanager.admin.address</name>
                  <value>localhost:8033</value>
          </property>
 </configuration>

 

格式化hdfs

hdfs namenode -format

启动hadoop

start-all.sh

关闭hadoop

stop-all.sh

查看启动情况

 

hdfs网页如下图,可以看到文件信息,地址:http://127.0.0.1:9870/

伪分布式下kafka的使用 伪分布式hadoop_JAVA_02

yarn的网页如下图,可以看到任务信息,地址:http://127.0.0.1:8088/cluster

伪分布式下kafka的使用 伪分布式hadoop_JAVA_03

至此,hadoop3.2.1伪分布式搭建和验证完毕。

 

提示:

ERROR: Unable to write in xxx/logs. Aborting.

在进行Hadoop节点格式化时候出现

Starting resourcemanager  ERROR: Unable to write in /home/zhang/opt/hadoop-3.1.0/logs. Aborting.

原因:权限不够

加入-R 参数,将读写权限传递给子文件夹
chmod -R  777      /logs

或者出现了Cannot create directory

同样是因为权限不够:将需要的权限给予相应的 文件夹

sudo chmod -R a+w     /tmp

 

 

启动hadoop,报错Error JAVA_HOME is not set and could not be found

报如错误:JAVA_HOME is not set and could not be found,可能是因为JAVA_HOME环境没配置正确,还有一种情况是即使各结点都正确地配置了JAVA_HOME,但在集群环境下还是报该错误,解决方法是显示地重新声明一遍JAVA_HOME

        1、检查JAVA_HOME是否配置正确(伪分布式环境)

        启动start-all.sh时报错,错误所示 Error JAVA_HOME is not set and could not be found

         检查环境变量

           输入java –version,查看jdk是否安装成功

           输入export,查看jdk环境变量是否设置成功

        2.在集群环境下,即使各结点都正确地配置了JAVA_HOME,也会错误Error JAVA_HOME is not set and could not be found

           在hadoop-env.sh中,再显示地重新声明一遍JAVA_HOME

  

伪分布式下kafka的使用 伪分布式hadoop_JAVA_04

伪分布式下kafka的使用 伪分布式hadoop_hdfs_05