云计算——Hadoop2的搭建

云计算——Hadoop2的搭建

1 实验环境

2创建hadoop用户

1.在终端窗口,输入如下命令创建可以登陆的 hadoop 新用户,并使用 /bin/bash 作为 shell。

2.使用如下命令设置密码,按提示输入两次:

3.为 hadoop 用户增加管理员权限,方便部署,避免一些权限问题:

4.注销当前用户,在登录界面使用刚刚创建的hadoop进行登录。

      

更新apt

1.用 hadoop 用户登录后,更新一下 apt,因为后续将使用 apt 安装软件,未更新可能导致部分软件安装失败。

2.安装vim以便后续更改配置文件

4    安装SSH并配置SSH无密码登录

1.由于Ubuntu 默认已安装了 SSH client,所以还需要安装 SSH server

由于前面未登出Ubuntu本机用户,在那时已安装SSH(可见下文实验中遇到的问题),在Hadoop账号中安装显示如下:

 

 

2.安装后,登录本机

3.提示(SSH首次登陆提示)后,输入 yes 。然后按提示输入密码

      4.由于这样登陆需要每次输入密码,进行SSH无密码登陆配置。

首先退出 ssh,回到终端窗口

然后利用 ssh-keygen 生成密钥,对所有提示按回车键

命令:ssh-keygen -t rsa

将密钥加入到授权中:

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆:

SSH无密码登录配置完毕

5    安装Java环境

1.通过命令安装 OpenJDK 7

由于前面未登出Ubuntu本机用户,在那时已安装OpenJDK 7(可见下——实验中遇到的问题)

2.安装好 OpenJDK 后,找到相应的安装路径,用于配置 JAVA_HOME 环境变量的。执行如下命令:

该命令输出的路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径。

如图输出路径为 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,

则需要的路径为 /usr/lib/jvm/java-7-openjdk-amd64。

3.配置 JAVA_HOME 环境变量,在 ~/.bashrc 中进行设置

在文件最前面添加如下单独一行(注意 = 号前后不能有空格),并保存退出:

 

4. 让该环境变量生效,执行如下代码

 

5. 设置好后检验一下是否设置正确:

检验变量值,如果设置正确的话,$JAVA_HOME/bin/java -version 会输出 java 的版本信息,且和 java -version 的输出结果一样。

 

Hadoop所需Java环境安装完毕。

 

6    安装Hadoop2

1.在http://mirrors.cnnic.cn/apache/hadoop/common/上下载hadoop2,选择下载最新的稳定版本,即下载 “stable” 下的 hadoop-2.9.1.tar.gz 这个文件

记录下载地址

https://www-eu.apache.org/dist/hadoop/common/stable/

打开 hadoop-2.9.1.tar.gz.mds 这个文件,该文件包含了检验值可用于检查 hadoop-2.9.1.tar.gz 的完整性,否则若文件发生了损坏或下载不完整,Hadoop 将无法正常运行。

查看hadoop-2.9.1.tar.gz.mds 文件如下:

 

2.计算hadoop-2.9.1.tar.gz 的md5值,并转化为大写,方便比较

和hadoop-2.9.1.tar.gz.mds中 的MD5值对比,发现完全相同,即文件完整,下载正确。

3. 将 Hadoop 安装至 /usr/local/ 中

解压到/usr/local中

将文件夹名改为hadoop

修改文件权限

4、输入命令cd hadoop来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息。

7    Hadoop单机配置(非分布式)

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

运行测试验证:

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

将配置文件作为输入文件

查看运行结果

执行成功后如图所示,输出的结果是符合正则的单词 dfsadmin 出现了1次

8 Hadoop伪分布式配置

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

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

1.修改配置文件 core-site.xml

将core-site.xml中的

修改为

2.同样修改配置文件 hdfs-site.xml

将 hdfs-site.xml:中的

修改为

3. 配置完成后,执行 NameNode 的格式化:

 

4开启 NaneNode 和 DataNode 守护进程

出现WARN ,可忽略。

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程:

即成功启动hadoop

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

 

 

运行Hadoop伪分布式实例

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

  1. 将 ./etc/hadoop 中的 xml 文件作为输入文件复制到分布式文件系统中,即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/hadoop/input1 中。由于使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input1,其对应的绝对路径就是 /user/hadoop/input1:

  1. 复制完成后,可以通过命令 ./bin/hdfs dfs -ls input1查看文件列表
  2. 伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹,输出结果 output 文件夹都删掉来验证这一点)。

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

由于刚才更改了配置文件,所以运行结果不同。

  1. 将运行结果取回到本地:

先删除本地output1文件(如果存在):

将 HDFS 上的 output 文件夹拷贝到本机:

查看:

  1. 关闭 Hadoop,则运行

实验完成。

 

10 实验中遇到的问题

 1. 在创建hadoop用户后忘记注销使用新创建的hadoop而延续自己的原Ubuntu账户,导致ssh登录按要求输入密码报错。

期间已花大量时间完成apt的更新,vim、ssh的安装和jdk的下载,绝望。

 

2. 执行 namenode 的格式化:

报错如图

输入sudo bin/hdfs namenode -format 

报错如下

啊啊啊为什么!!!

修正:

在文件 ./etc/hadoop/hadoop-env.sh 中设置 JAVA_HOME 变量

找到        

将其修改为

再重新尝试,还是不行。。。。。

查看网上资料,说是/usr/hadoop/tmp的权限没有设置,重新设置权限

再次运行

成功了!!!

3. 开始忽略问题2,直接开启 NaneNode 和 DataNode 守护进程

通过命令 jps 列出如下进程:

Namenode未开启,与问题2有关,解决问题2 后问题3 解决

有用就点个赞吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值