三台虚拟机搭建Hadoop集成环境

写在前面

这个是研一选的高性能计算的一门课堂作业,其中要求搭建Hadoop集成环境,一台master主机,两台slave主机。
在这里将报告内容粘贴过来,将来可能会用到。

环境搭建过程

实验环境:

  • 主机OS:Ubuntu14.04 desktop amd64
  • Hadoop版本:2.9.0
  • Java版本:8u151

安装hadoop

进去hadoop官网:
这里写图片描述
下载需要的版本:
这里写图片描述
在这里我选择下载2.9.0版本的Hadoop,下载后使用命令:
tar -xzvf hadoop-2.9.0.tar.gz
将其解压缩.
进入解压缩之后的目录我们可以看到一下目录结构:
这里写图片描述
我们将hadoop-2.9.0的文件移动到到/usr/local/下,并重命名为hadoop,这里使用命令:
sudo mv /home/meishijia/Downloads/hadoop-2.9.0 hadoop

新建hadoop 用户和用户组,修改权限

然后创建新用户hadoop以及将hadoop用户添加到hadoop用户组中。分别执行命令:
sudo adduser hadoop
sudo usermod -a -G hadoop hadoop
使用命令查看是否添加成功:
cat /etc/group
这里写图片描述
修改hadoop的权限使其拥有跟root用户一样的权限。
这里写图片描述
这里写图片描述
在里面添加一行:hadoop ALL=(ALL) ALL
接着通过以下的命令使hadoop对hadoop文件夹有相关的权限。
sudo chown -R hadoop:hadoop ./hadoop/
这里写图片描述

安装ssh

因为以后的操作要用到ssh面密登录,现在先确保系统里安装好ssh. 如果未安装可利用sudo apt-get install ssh 安装,使用ssh localhost 来ssh登陆本机
使用命令dpkg –l |grep ssh
检查是否安装openssh-server
这里写图片描述
没有的话使用apt-get安装。
这里写图片描述
安装完成之后检查是否启动:
这里写图片描述
有sshd说明已经启动,没有启动的话使用命令:
/etc/init.d/ssh start 来启动ssh服务。

配置JAVA 环境

首先下载java jdk,选择正确的版本。我这里选择的是jdk-8u151-linux-64:
这里写图片描述
解压之后将其移动到/usr/local/lib文件夹中并重新命名为jvm。
然后修改配置问价/etc/profile。
这里写图片描述
使用命令source /etc/profile使其生效。
这里写图片描述
检查是否jdk安装成功。
这里写图片描述
(五)配置三台主机hostname以及ssh
然后将这一个虚拟机克隆两份作为slave节点。现在我们拥有了三台虚拟机,上面都安装了hadoop 以及 JDK。
现在分别在三台虚拟机上执行如下步骤:
1.修改/etc/hostname 将里面的内容分别修改成 master、slave1、slave2。修改完成之后重启系统才能生效。再以hadoop账号登录。
2.使用命令 ifconfig 分别查看三台主机的地址。在三台主机上修改文件/etc/hosts内容如下:
这里写图片描述
3.检查主机之间能否互相ping通,然后配置ssh免密登录。
以下截图是我配置slave2节点时的截图。
使用ssh登录localhost(会生成一个路径为~/.ssh的文件夹):
这里写图片描述
可以使用exit退出登录。
这里写图片描述
配置ssh免密登录,首先生成公钥和私钥
这里写图片描述
这时候~/.ssh目录结构如下图所示:
这里写图片描述
将id_rsa.pub的内容复制到authorized_keys文件中去,命令如下:
这里写图片描述
这个时候在通过ssh连接localhost就不需要密码了。
这里写图片描述
然后将master上的authorized_keys拷贝到slave1和slave2上去。
我先在master上复制了一份authorized_keys文件并命名为tmp。
这里写图片描述
然后分别在slave1和slave2上将tmp文件中的内容添加到authorized_keys文件中。
这里写图片描述

这里写图片描述
在master上尝试免密登录slave1和slave2.
这里写图片描述

这里写图片描述

配置master上的hadoop文件

  1. 在/usr/local/hadoop目录下新建如下文件夹:
    mkdir dfs
    mkdir dfs/name
    mkdir dfs/data
    mkdir tmp
  2. 配置文件(文件都在/usr/local/hadoop/etc/hadoop中)
    配置 hadoop-env.sh
    修改JAVA_HOME值(export JAVA_HOME=/usr/local/lib/jvm)
    配置yarn-env.sh
    修改JAVA_HOME值(export JAVA_HOME=/usr/local/lib/jvm)
  3. 配置文件:slaves
    将内容修改为:
    slave1
    slave2
  4. 配置文件:core-site.xml

    这里写图片描述

    配置文件:hdfs-site.xml

    这里写图片描述

    配置文件:mapred-site.xml

    这里写图片描述

    这里写图片描述

    配置文件:yarn-site.xml

    这里写图片描述

    将hadoop传输到slave1和slave2 usr/local/hadoop目录.

配置环境变量启动hadoop

修改文件/etc/profile
这里写图片描述

执行命令source /etc/profile使其生效
然后需要修改/usr/local/Hadoop/tmp 的权限
chown –R hadoop:hadoop /usr/local/hadoop/tmp
sudo chmod -R a+w /usr/local/hadoop

不然会出现以下错误情况:
这里写图片描述
然后进入/usr/local/Hadoop 启动hadoop
这里写图片描述

这里写图片描述
然后检查是否启动成功:
这里写图片描述
看到下面的结果,则表示成功。
Master
这里写图片描述
slave
这里写图片描述

其实到了这里,namenode节点并没有启动起来,后来我尝试多次format hdfs,再启动又成功了。
但是由于是初次接触,并没有搞懂其中原理,并不知道一些配置文件和数据库操作的用途。此处存疑

再记录一下搭建环境过程中遇到若干问题如下:
1. ssh免密登录配置不成功。解决方法,主要掌握ssh免密登录原理,需要把登录方的公钥保存在被登录方的authroized_keys文件中。
2. dfs –put 文件时,出现live node 数目为0,因为hosts文件中多了一句 127.0.1.1 mater,三个都删掉。
3. 搭建环境之后,需要自己编写java文件并打包成jar文件,如果用命令行的话出现程序中很多import的package找不到而编译报错。尝试过将hadoop安装包中的jar包路径添加到java classpath中,依然未能完全解决问题。于是采用了在eclipse中创建hadoop工程的途径。而使用eclipse变成也会遇到各种问题,如需要安装插件,以及配置HDFS的location的问题。

猜你喜欢

转载自blog.csdn.net/banzhihuanyu/article/details/78951723