来自 电脑知识 2019-12-23 03:53 的文章
当前位置: 威尼斯国际官方网站 > 电脑知识 > 正文

Hadoop遭逢搭建,在CentOS中搭建Hadoop的详实步骤

搭建说明:第一次搭建 Hadoop 的小伙伴,请严格按照文章中的软件环境和步骤搭建,不一样的版本都可能会导致问题。

学习hadoop一段时间了,今天开始对学习的知识进行回顾和记录。

软件环境:

1、环境及软件依赖:

虚拟机:VMware Pro14

Ubuntu 16.04.2 

Linux:CentOS-6.4(下载地址,下载DVD版本即可)

Hadoop 2.8.0

JDK:OpenJDK1.8.0 (强力建议不要使用 Oracle 公司的 Linux 版本的 JDK)

2、创建hadoop用户

Hadoop:2.6.5(下载地址)

  • 创建hadoop用户。

虚拟机的安装和Linux系统的安装这里就省略了,可以参照网上的教程安装,一般没什么大问题,需要注意的是记住这里你输入的用户密码,下面还要用,如下图所示。

  创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell

图片 1

sudo useradd -m hadoop -s /bin/bash

设置用户密码.jpg

  • 设置密码

    sudo passwd hadoop

  • 增加管理员权限

用户选择

  方便部署,避免一些权限问题。

使用虚拟机安装好系统后,可以看到登录界面,如下图所示。

sudo adduser hadoop sudo

图片 2

  • 注销当前用户,用hadoop 用户进行登陆

选择 Other ,在 Username 输入框中输入 root ,回车,再在 Password 输入框中输入你创建用户时密码。root 用户是安装 CentOS 自动创建的超级用户,但密码和你安装系统时创建的普通用户密码是一样的。

3、安装配置SSH

平时在使用 CentOS 时,并不推荐使用 root 用户,因为该用户具有整个系统的最高权限,使用该用户可能会导致严重的后果,但前提是你对 Linux 很熟,才会误操作。搭建 Hadoop 的大数据平台,使用普通用户,很多命令需要 sudo 命令来获取 root 用户的权限,比较麻烦,所以索性直接使用 root 用户。

集群、单节点模式都需要用到 SSH 登陆。

安装SSH

  • 安装SSH server。Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

    sudo apt-get install openssh-server

  • 登陆本机测试:

    ssh localhost

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令)。

  此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。

首先确保你的 CentOS 系统可以正常的上网,你可以查看桌面右上角的网络图标,若显示红叉则表明未联网,可点击选择可用网络,也可以使用桌面左上角的火狐浏览器输入网址验证是否网络连接正常。如果还是无法上网,检查虚拟机的设置,选用 NAT 模式,或者上网百度解决。

  • SSH无密码登陆

图片 3

  利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

检查网络状况.jpg

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

确定网络连接正常后,打开 CentOS 的终端,可在 CentOS 的桌面点击鼠标右键,选择 Open In Terminal ,如下图所示。

  • SSH无密码登陆测试

    ssh localhost

图片 4

 

打开终端.jpg

4、安装JAVA环境

一般情况下,CentOS 默认已安装了 SSH client、SSH server,可打开终端执行如下命令进行检验:

Java环境可选择 Oracle 的 JDK,或是 OpenJDK。

rpm -qa | grep ssh
  • 安装OpenJDK

    sudo apt-get install openjdk-7-jre openjdk-7-jdk

  • 设置环境变量

如果返回的结果如下图所示,包含了 SSH client 跟 SSH server,则不需要再安装。

  在 ~/.bashrc 中进行设置(扩展阅读:设置Linux环境变量的方法和区别):

图片 5

vim ~/.bashrc

查看SSH是否已安装.jpg

  获取OpenJDK的安装路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径了:

如果需要安装,则可以通过 yum 这个包管理器进行安装。(安装过程中会让你输入 [y/N],输入 y 即可)

dpkg -L openjdk-7-jdk | grep '/bin/javac'

注意:命令是单条执行的,不是直接把两条命令粘贴过去。

  在文件最前面添加如下单独一行(注意 = 号前后不能有空格),将“JDK安装路径”改为上述命令得到的路径,并保存:

终端中的粘贴可通过鼠标点击右键选择 Paste 粘贴,也可通过快捷键 【Shift + Insert】粘贴。

export JAVA_HOME=JDK安装路径
yum install openssh-clients
yum install openssh-server

  让该环境变量生效:

SSH安装完成后,执行如下命令测试一下 SSH 是否可用(SSH首次登陆提示 yes/no 信息,输入 yes 即可,然后按照提示输入 root 用户的密码,这样就登录到本机了),如下图所示。

source ~/.bashrc    # 使变量设置生效

图片 6

  • 验证安装

    echo $JAVA_HOME # 检验变量值 java -version $JAVA_HOME/bin/java -version # 与直接执行 java -version 一样

首次登录SSH.jpg

5、安装Hadoop

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

  • 安装。

首先输入 exit 退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中。

  下载hadoop-2.8.0,将 Hadoop 安装至 /usr/local/ 中:

exit       # 退出刚才的 ssh localhost
cd ~/.ssh/      # 若提示没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa    # 会有提示,都按回车即可
cat id_rsa.pub >> authorized_keys # 加入授权
chmod 600 ./authorized_keys # 修改文件权限
sudo tar -zxf hadoop-2.8.0.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.8.0/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop       # 修改文件权限

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了,如下图所示。

  • 验证Hadoop安装

图片 7

  检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息

再次登录SSH.jpg

./bin/hadoop version

安装 Java 环境

6、hadoop单机示例

Java 环境可选择 Oracle 的 JDK,或是 OpenJDK(可看作 JDK 的开源版本),现在一般 Linux 系统默认安装的基本是 OpenJDK,这里安装的是 OpenJDK1.8.0版本的。

  Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。

有的 CentOS 6.4 默认安装了 OpenJDK 1.7,这里我们可以使用命令检查一下,和 Windows 下的命令一样,还可以查看 JAVA_HOME 这个环境变量的值。

  在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。

java -version     # 查看 java 的版本
javac -version    # 查看编译命令 Javac 的版本
echo $JAVA_HOME    # 查看 $JAVA_HOME 这个环境变量的值
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.]+'
cat ./output/*          # 查看运行结果

如果系统没有安装 OpenJDK,我们可以通过 yum 包管理器来安装。(安装过程中会让输入 [y/N],输入 y 即可)

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

复制代码 代码如下:

7、hadoop伪分布配置及示例

yum install java-1.8.0-openjdk  java-1.8.0-openjdk-devel  #安装 openjdk1.8.0

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

通过上述命令安装 OpenJDK,默认安装位置为 /usr/lib/jvm/java-1.8.0,下面配置 JAVA_HOME 时就使用这个位置。

  • 配置文件修改。

接着需要配置一下 JAVA_HOME 环境变量,为了方便,直接在 ~/.bashrc 中进行设置,相当于配置的是 Windows 的用户环境变量,只对单个用户生效,当用户登录后,每次打开 shell 终端,.bashrc 文件都会被读取。

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

修改文件,可以直接使用 vim 编辑器打开文件,也可以使用类似于 Windows 记事本的 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>
vim ~/.bashrc    # 使用 vim 编辑器在终端中打开 .bashrc 文件
gedit ~/.bashrc    # 使用 gedit 文本编辑器打开 .bashrc 文件

   修改配置文件 core-site.xml,修改为如下:

在文件最后面添加如下单独一行(指向 JDK 的安装位置),并 保存

<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>

图片 8

  •  NameNode 的格式化。

配置JAVA_HOME环境变量.jpg

  成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。

接着还需要让该环境变量生效,执行如下命令。

bin/hdfs namenode -format
source ~/.bashrc    # 使变量设置生效
  • 开启 NameNode 和 DataNode 守护进程

    ./sbin/start-dfs.sh

  • 验证是否成功:

设置好后我们来检验一下是否设置正确,如下图所示。

  启动完成后,可以通过命令 jps 来判断是否成功启动。

echo $JAVA_HOME  # 检验变量值
java -version
javac -version
$JAVA_HOME/bin/java -version # 与直接执行 java -version 一样

  图片 9

图片 10

  成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

检查JAVA_HOME环境变量是否配置正确.jpg

  • 示例

这样,Hadoop 所需的 Java 运行环境就安装好了。

   使用上面单机模式的例子(运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中)。

安装 Hadoop

  1)在 HDFS 中创建用户目录:

在前面 软件环境 已经给出了 hadoop2.6.5 的下载地址,可以直接通过火狐浏览器打开下载,默认下载位置是在用户的 Home 中的 Downloads 文件夹下,如下图所示。

  2) xml 文件作为输入文件复制到分布式文件系统中:

图片 11

  我们使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input,其对应的绝对路径就是 /user/hadoop/input

下载Hadoop.jpg

./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input

./bin/hdfs dfs -ls input  #查看文件列表

下载完成后,我们将 Hadoop 解压到 /usr/local/ 中。

  3)执行处理

tar -zxf ~/下载/hadoop-2.6.5.tar.gz -C /usr/local # 解压到/usr/local目录中
cd /usr/local/       # 切换当前目录为 /usr/local 目录
mv ./hadoop-2.6.5/ ./hadoop   # 将文件夹名改为hadoop
chown -R root:root ./hadoop   # 修改文件权限,root 是当前用户名

  Hadoop 运行程序时,输出目录不能存在,否则会提示错误 

Hadoop 解压后即可使用,输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息。

./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
cd /usr/local/hadoop     # 切换当前目录为 /usr/local/hadoop 目录
./bin/hadoop version     # 查看 Hadoop 的版本信息

  4)查看结果

或者直接输入 hadoop version 命令也可以查看。

  查看运行结果的命令(查看的是位于 HDFS 中的输出结果):

hadoop version       # 查看 Hadoop 的版本信息
./bin/hdfs dfs -cat output/*

图片 12

  将运行结果取回到本地:

本文由威尼斯国际官方网站发布于电脑知识,转载请注明出处:Hadoop遭逢搭建,在CentOS中搭建Hadoop的详实步骤

关键词: