• 环境准备
    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

unbuntu的hadoop安装 hadoop ubuntu安装_大数据


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

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

unbuntu的hadoop安装 hadoop ubuntu安装_linux_02

  • 安装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,然后输入密码,登录成功。

unbuntu的hadoop安装 hadoop ubuntu安装_大数据_03

然后我们输入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。前者是你的公钥,后者是你的私钥。


unbuntu的hadoop安装 hadoop ubuntu安装_hadoop_04



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

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


unbuntu的hadoop安装 hadoop ubuntu安装_java_05


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

unbuntu的hadoop安装 hadoop ubuntu安装_hadoop_06


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/*          # 查看运行结果

unbuntu的hadoop安装 hadoop ubuntu安装_unbuntu的hadoop安装_07

注意,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>

unbuntu的hadoop安装 hadoop ubuntu安装_java_08

  • 修改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>

unbuntu的hadoop安装 hadoop ubuntu安装_hadoop_09

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

  • 配置完成后,执行 NameNode 的格式化
$ cd /usr/local/hadoop
$ ./bin/hdfs namenode -format

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

unbuntu的hadoop安装 hadoop ubuntu安装_java_10

  • 开启 NameNode 和 DataNode 守护进程
$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh

unbuntu的hadoop安装 hadoop ubuntu安装_unbuntu的hadoop安装_11

  • 通过jps命令检查Hadoop是否成功启动
    若成功启动则会列出如下进程,如果没有 NameNode 或 DataNode ,那就是配置不成功。

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

unbuntu的hadoop安装 hadoop ubuntu安装_hadoop_12

  • 运行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/*

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


unbuntu的hadoop安装 hadoop ubuntu安装_unbuntu的hadoop安装_13

  • 关闭Hadoop
./sbin/stop-dfs.sh