Hadoop安装 | 单机环境与伪分布式环境(Ubuntu系统)

  • 环境准备

    Ubuntu16.04 64位 、Hadoop2.9.2、jdk8

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

  • 下载地址

    可以通过官网自行下载

    1. Hadoop:http://hadoop.apache.org/
    2. jdk8:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

    也可以从百度云链接中下载

    链接:https://pan.baidu.com/s/1dehs6l9CDp_uDvSt3YeLzg
    提取码:fp7c

  

Hadoop单机环境搭建

要安装Hadoop,需要先做一些准备工作。

1 创建Hadoop用户

首先,如果你安装 Ubuntu 的时候不是用的 “hadoop” 用户,就需要创建一个新的用户,并赋予其管理员权限。

  • 创建hadoop用户,并使用 /bin/bash 作为 shell

    $ sudo useradd -m hadoop -s /bin/bash 
    
  • 设置hadoop用户的密码

    $ sudo passwd hadoop          #这里需要输入两次新密码(不管密码强度如何,管理员权限都可以直接改)
    
  • 为hadoop用户增加管理员权限

    $ sudo adduser hadoop sudo
    

在这里插入图片描述


2 更新 apt 安装包索引、安装vim

  • 更新apt

    $ sudo apt-get update          # 如果没更新apt可能会造成软件安装失败
    

    在这里插入图片描述

  • 安装vim

    由于后续我们需要编辑一些配置文件,用vim会比较便捷。

    $ sudo apt-get install vim
    

3 安装SSH并配置SSH免密登录

  • 安装SSH

    $ sudo apt-get install openssh-server      # 安装SSH server
    

    安装好SSH之后可以使用如下命令登录本机(localhost):

    $ ssh localhost
    

    登录SSH会有以下提示信息,输入yes,然后输入密码,登录成功。

    然后我们输入exit退出localhost。

    $ exit
    
  • 配置SSH免密登录

    $ cd ~/.ssh                # 进入ssh配置目录,如果没有该目录,先执行一次ssh localhost
    $ ssh-keygen -t rsa        # 生成ssh密钥。提示信息都按回车即可
    $ cat ./id_rsa.pub >> ./authorized_keys      # 将公钥加入授权(注意是在当前目录下)
    $ ssh localhost            # 测试ssh是否免密登录
    

    ssh-keygen 运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
    在这里插入图片描述



SSH (Secure Shell)

SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

SSH分为SSH client和SSH server,即客户端 openssh-client(ssh) 和服务端 openssh-server(sshd)。如果你想登录别的机器的SSH,那么你只需要在本机上安装openssh-client;如果你想要开放SSH服务让别人登录,那么你就需要安装openssh-server。Ubuntu 默认已安装了 SSH client,因此我们还需要安装 SSH server。

SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。

什么是SSH客户端?

比如:“SSH Secure Shell”、“PuTTY”、“securecrt” 它们都是SSH客户端,使用它们就可以在windows下连接并操作linux服务器。


4 安装JDK并配置环境变量

安装jdk环境有许多方法,这只是其中一种。

  • 安装jdk

    在/usr/lib 目录下创建新目录jvm

    $ cd /usr/lib       
    $ mkdir jvm
    

    进入存储jdk压缩包的目录:

    $ cd /mnt/hgfs/ShareData    
    # 这里我将jdk压缩包放在了共享文件夹中,Ubuntu安装完VMWareTools后,共享文件夹默认在 /mnt/hgfs/ 下
    

    将下载好的jdk8的安装包jdk-8u162-linux-x64.tar.gz解压到 /usr/lib/jvm/下:

    $ sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm    # 解压当前目录下的jdk文到/usr/lib/jvm
    
  • 配置Java环境变量

    $ cd ~
    $ vim ~/.bashrc         # vim编辑配置文件
    

    .bashrc 文件的开头添加如下信息:

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    

    然后保存退出,执行如下命令,使配置文件生效:

    $ source ~/.bashrc
    

    查看Java是否安装成功:

    $ java -version 
    

    出现如下信息证明安装成功:

    在这里插入图片描述


5 安装Hadoop

  • 进入Hadoop安装包所在目录,将其解压至 /usr/local 中

    $ cd /mnt/hgfs/ShareData         # 安装包在我系统中的位置
    $ tar -zxvf hadoop-2.9.2.tar.gz -C /usr/local       # 解压
    
  • 进入/usr/local/ ,将目录hadoop-2.9.2改名为hadoop

    $ cd /usr/local/
    $ mv ./hadoop-2.9.2/  ./hadoop   
    
  • 修改用户hadoop操作Hadoop的权限

    $ sudo chown -R hadoop ./hadoop
    
  • 查看Hadoop是否安装成功

    $ cd /usr/local/hadoop
    $ ./bin/hadoop version 
    


6 Hadoop单机配置

Hadoop 默认模式即为单机模式(本地模式)。现在我们可以运行一个Hadoop实例。

$ cd /usr/local/hadoop

$ mkdir ./input
$ cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件

$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'                    # 运行Hadoop实例

$ cat ./output/*          # 查看运行结果

在这里插入图片描述

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

$ rm -r ./output



Hadoop伪分布式环境搭建

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

伪分布式需要修改2个配置文件 core-site.xmlhdfs-site.xml,它们位于 /usr/local/hadoop/etc/hadoop/ 中。

  • 修改core-site.xml

    $ cd /usr/local/hadoop/ect/hadoop
    $ gedit ./core-site.xml
    

    将的内容修改如下:

    <configuration>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/usr/local/hadoop/tmp</value>
            <description>Abase for other temporary directories.</description>
        </property>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
    </configuration>
    

    在这里插入图片描述

  • 修改hdfs-site.xml

    $ gedit ./hdfs-site.xml
    

    将的内容修改如下:

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
    </configuration>
    

    在这里插入图片描述

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

  • 配置完成后,执行 NameNode 的格式化

    $ cd /usr/local/hadoop
    $ ./bin/hdfs namenode -format
    

    若成功则会看到 “successfully formatted” 的提示:

    在这里插入图片描述

  • 开启 NameNode 和 DataNode 守护进程

    $ cd /usr/local/hadoop
    $ ./sbin/start-dfs.sh 
    

    在这里插入图片描述

  • 通过jps命令检查Hadoop是否成功启动

    若成功启动则会列出如下进程,如果没有 NameNode 或 DataNode ,那就是配置不成功。

    启动成功后,通过web访问http://[NameNode的IP地址]:50070,这里是http://localhost:50070,出现以下界面。可以查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

    在这里插入图片描述

  • 运行Hadoop伪分布式实例

    伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹,输出结果 output 文件夹都删掉来验证这一点)。

    上面的单机模式,grep 例子读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录:

    $ ./bin/hdfs dfs -mkdir -p /user/hadoop
    

    创建input目录:

    $ ./bin/hdfs dfs -mkdir input           
    $ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input       # 将输入文件复制到分布式文件系统
    

    执行Hadoop实例:

    $ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
    

    查看运行结果:

    $ ./bin/hdfs dfs -cat output/*
    

    结果如下,注意到刚才我们已经更改了配置文件,所以运行结果不同。

    在这里插入图片描述

  • 关闭Hadoop

    ./sbin/stop-dfs.sh
    



参考链接:

http://dblab.xmu.edu.cn/blog/install-hadoop/

http://dblab.xmu.edu.cn/blog/1233/

http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html (SSH)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值