Hadoop单机与伪分布式环境(CentOS)

本文介绍了如何在CentOS 7系统中搭建Hadoop的单机和伪分布式环境,包括环境准备、CentOS配置、用户权限设置、JDK安装、SSH配置、Hadoop安装及配置等步骤,详细阐述了每个环节的关键操作。
摘要由CSDN通过智能技术生成

Hadoop单机与伪分布式环境(CentOS)

环境准备

  • 环境准备

    CentOS 7 64位 、Hadoop2.7.2、jdk1.8

    这里使用的是虚拟机安装CentOS 7 系统进行环境搭建。

  • 下载地址

    可以通过官网自行下载

    1. Hadoop 2.7.2 https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
    2. jdk1.8 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

CentOS 配置

虚拟机安装好之后设置网络连接方式为NAT,设置静态IP,并且关闭防火墙。或者也可以设置网络连接方式为桥接方式,但之后的Hadoop分布式集群搭建也会使用NAT模式。

设置网络连接为NAT模式参考博客


首先来进行一些系统的设置。

创建用户并设置root权限

  • 创建用户ht
$ su              # 以 root 用户登录
$ useradd -m ht -s /bin/bash   # 创建新用户ht
$ passwd ht       // 修改密码
  • 赋予ht 用户root的权限

要赋予权限,先把当前用户切换为 root

首先要知道系统中存放sudoer的目录位置,使用如下命令:

$ whereis sudoers

得到结果:

在这里插入图片描述

使用ls -l查看root用户对sudoers文件的权限,发现是只读权限,就增加写的权限。

增加写权限:

$ chmod -v u+w /etc/sudoers

在这里插入图片描述

然后执行以下命令:

$ vim /etc/sudoers

第100行,可以先按一下键盘上的 ESC 键,然后输入:100 (按一下冒号,接着输入100,再按回车键)。添加如下一行内容到文件中:

[你的普通用户名]      ALL=(ALL)       ALL

如图:

在这里插入图片描述

然后收回root用户对sudoers文件的写权限:

$ chmod -v u-w /etc/sudoers

在这里插入图片描述

上面已经修改了用户的权限,现在我们使用su命令登录该用户。

$ su ht

修改主机名

通过hostnamectl set-hostname [新的主机名]可以永久修改主机名:

[ht@localhost ~]$ hostnamectl set-hostname hadoop100
[ht@localhost ~]$ hostname
hadoop100

然后修改 /etc/hosts,配置主机名到IP地址的映射:

[ht@localhost ~]$ sudo vim /etc/hosts

新增以下内容,如图:

192.168.137.100 hadoop100

在这里插入图片描述

最后重启机器。

【/etc/hosts 和/etc/hostname的区别】

  • hostname是主机名,用来标识你的机器

  • /etc/hosts功能相当于DNS,记录IP到主机名/域名的映射,Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。

    hosts文件格式是一行一条记录,分别是 IP hostname aliases,三者用空白字符分隔,aliases可选。

    127.0.0.1 到 localhost 这一条建议不要修改,很多应用程序会用到这个。

安装SSH、配置SSH免密登陆

先使用以下命令查看一下系统中是否安装了SSH:

[ht@hadoop100 ~]$ rpm -qa | grep ssh
openssh-7.4p1-21.el7.x86_64
libssh2-1.8.0-3.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64

可以看到ssh-server与ssh-clients已经安装好了,就不需要再安装。

若需要安装,则可以通过 yum 进行安装(安装过程中会让你输入 [y/N],输入 y 即可):

sudo yum install openssh-clients
sudo yum install openssh-server

接着使用以下命令来登录SSH(相当于远程登录到本机):

[ht@hadoop100 ~]$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is xxx(马赛克).
ECDSA key fingerprint is xxx(马赛克).
Are you sure you want to continue connecting (yes/no)? yes     # 输入yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
ht@localhost's password: 
Last login: Wed Dec  2 18:17:17 2020

但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。

退出远程登录:

[ht@hadoop100 ~]$ exit
logout
Connection to localhost closed.

配置SSH免密登录:

[ht@hadoop100 ~]$ cd .ssh/
[ht@hadoop100 .ssh]$ ssh-keygen -t rsa  #生成密钥对的时候,一直按回车即可
[ht@hadoop100 .ssh]$ cat id_rsa.pub >> authorized_keys
[ht@hadoop100 .ssh]$ chmod 600 authorized_keys

[ht@hadoop100 .ssh]$ ssh localhost        #测试看看登录是否不用密码了
Last login: Thu Dec  3 08:18:47 2020 from localhost

注:上述命令中,修改了公钥文件id_rsa.pub的权限,这样用户ht才能读取公钥。

[ht@hadoop100 .ssh]$ ll id_rsa.pub 
-rw-r--r--. 1 ht ht 394 Dec  3 08:16 id_rsa.pub

安装JDK

1.先检查系统中是否已经安装jdk:

[ht@hadoop100 ~]$ rpm -qa | grep java
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
tzdata-java-2019c-1.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64

如果是则先卸载:

[ht@hadoop100 ~]$ sudo yum -y remove java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64

2.创建以下目录用于安装:

[ht@hadoop100 opt]$ sudo mkdir module
[ht@hadoop100 opt]$ sudo mkdir software

修改module与software目录的权限:

[ht@hadoop100 opt]$ sudo chown ht:ht module/ software/

安装jdk:

[ht@hadoop100 ~]$ cd /opt/software/
[ht@hadoop100 software]$ tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/module/

3.配置java环境变量

打开配置文件:

[ht@hadoop100 ~]$ sudo vim /etc/profile

添加如下内容:

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_162
export PATH=$PATH:$JAVA_HOME/bin

在这里插入图片描述

使之生效:

[ht@hadoop100 ~]$ source /etc/profile

查看是否安装成功,如出现以下提示就是安装成功了:

[ht@hadoop100 ~]$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

Hadoop单机配置

Hadoop安装后默认为单机环境。

  • 安装Hadoop

    [ht@hadoop100 ~]$ cd /opt/software/
    [ht@hadoop100 software]$ tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
    
  • 配置环境变量

    [ht@hadoop100 ~]$ sudo vim /etc/profile
    [sudo] password for ht: 
    

    添加以下内容:

    #HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-2.7.2
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    

    在这里插入图片描述

    保存退出,使配置文件生效:

    [ht@hadoop100 ~]$ source /etc/profile
    

    查看Hadoop环境变量是否配置成功:

    [ht@hadoop100 ShareData_CentOS]$ hadoop version
    Hadoop 2.7.2
    Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41
    Compiled by jenkins on 2016-01-26T00:08Z
    Compiled with protoc 2.5.0
    From source with checksum d0fda26633fa762bff87ec759ebe689c
    This command was run using /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-common-2.7.2.jar
    

运行WordCount案例

[ht@hadoop100 hadoop-2.7.2]$ mkdir wcinput
[ht@hadoop100 hadoop-2.7.2]$ cd wcinput/
[ht@hadoop100 wcinput]$ touch wc.input
[ht@hadoop100 wcinput]$ vim wc.input 

输入几个词:

在这里插入图片描述

[ht@hadoop100 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
[ht@hadoop100 hadoop-2.7.2]$ cat wcoutput/part-r-00000      #查看运行结果

查看结果:

在这里插入图片描述

注意,Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 output文件删除。



Hadoop伪分布式配置

接下来,要分别修改这3个配置文件。

[ht@hadoop100 hadoop]$ vim hadoop-env.sh

[ht@hadoop100 hadoop]$ vim core-site.xml 

[ht@hadoop100 hadoop]$ vim hdfs-site.xml 
  • hadoop-env.sh

    打开hadoop-env.sh文件,定位到这一行,我们需要修改java的路径。

    在这里插入图片描述

    修改为:

    export JAVA_HOME=/opt/module/jdk1.8.0_162
    

    保存并退出。

  • core-site.xml

    将以下配置添加进去,然后保存退出:

    <!-- HDFS: Address of NameNode -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop100:9000</value>
        </property>
    
    <!-- to save output files when Hadoop runs -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-2.7.2/data/tmp</value>
        </property>
    

    在这里插入图片描述

  • hdfs-site.xml

    添加以下配置:

    <!-- HDFS:the number of replication -->
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    

  • 格式化namenode

    配置了hadoop环境变量的,可以在任何目录下执行hdfs命令。

    [ht@hadoop100 hadoop-2.7.2]$ hdfs namenode -format
    

    在这里插入图片描述

    格式化成功。注意:格式化只需要一次。

  • 启动伪分布式集群

    启动namenode

    [ht@hadoop100 hadoop-2.7.2]$ hadoop-daemon.sh start namenode
    starting namenode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-ht-namenode-hadoop100.out
    

    启动datanode

    [ht@hadoop100 hadoop-2.7.2]$ hadoop-daemon.sh start datanode
    starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-ht-datanode-hadoop100.out
    

    查看集群运行状态,输入jps命令:

    在这里插入图片描述

  • 在web端查看集群状态

    打开浏览器,访问:http://hadoop100:50070 或http://localhost:50070

    在这里插入图片描述

参考
http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/ 厦大数据库实验室博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值