大数据分析———摸索hadoop安装(MAC、树莓派|Windows安装虚拟机)上篇

in Linux分类 with 0 comment

这学期刚刚接触一门新的学科“大数据与云计算”,作为小白的我对这逼格无限高的云计算充满了未知和好奇,近年来各种媒体、电视、新媒体(微信之类)都在讲这玩意,“我们现在是大数据时代xxxxxx”,真的是整个四海八荒无人不知啊,但具体是啥呢,怎么用呢,就是我这学期要学的东西。
像往常一样,第一节课总少不了任课老师的各种“我们这节课怎么怎么吊的xxxxx,你们一定要认真学啊”,一通大道理之后便是环境的安装(最近写东西总是词穷,书还是读的不够)。我们班有50几个人,但是好像只有我一人是mac os系统,这就很僵,老师并没有说我的环境要怎么装(他们windows系统是先装一个虚拟机然后装linux,hadoop推荐安装ubuntu或者centos发行版),我顿时就想出三个解决方案:1.上网查,问dalao,mac内核和linux一样,应该也能装吧。2.把吃了1年灰的老联想搬出来(屏幕坏了,分屏严重)。3.把吃了2年灰的树莓派搬出来。
看了看这三种方案,我想都没想肯定第三个啊,第一个万一装坏了,(我的大mac,心疼)。第二个,弊端太多,老联想比mac重很多,而且屏幕炸裂,再拿出来上课也太low了,只有第三个,轻便、装逼、商务,嗯舒服。


树莓派|Windows装虚拟机安装hadoop

想好了就开始干了,先泡一杯热茶(向dalao学习),然后去Raspberry Pi/ubuntu官网,找一个适合自己的版本安装(我一般推荐最新的上一版,不会比最新版差很多,却很稳定)这里我主要讲hadoop安装,Raspberry Pi安装我就不讲了(其实我在2年前的老博客写过,但是老博客已经灰飞烟灭了),我树莓派装的是Ubuntu 14.04 64位作为系统环境。
创建hadoop用户
(这里我聊一句场外的,就是在虚拟机中你如果是图形界面的话,终端没有默认设置在外面的话,你就打开第一个搜索,输入z或者t,z是终端拼音的首字母,t是终端英文的首字母,都会出现终端。如果是树莓派或者虚拟机中装的是命令行界面的则忽略这一条)
(我这里再聊一句场外的,复制代码的时候请省略$符)
如果你安装 Ubuntu 的时候不是用的 "hadoop" 用户,那么需要增加一个名为 hadoop 的用户。

$sudo useradd -m hadoop -s /bin/bash

接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:

$sudo passwd hadoop

可为 hadoop 用户增加管理员权限,免去后面的指令前都需要sudo

$sudo adduser hadoop sudo

这里前置账户已经设置完了,但是后面我们需要修改一些配置文件,而该这些配置文件需要编译器,用nano或者vim都可,我推荐使用vim,我们安装编译器之前需要先更新一下ubuntu的源,然后安装,在终端中输入

$sudo apt-get update
$sudo apt-get upgrade

我这里用的是树莓派ubuntu官方的源,不卡也不报错,就是上面那个链接,然后安装vim编译器

sudo apt-get install vim

安装软件时若需要确认,在提示处输入 y 即可。(vim使用是按i插入,修改完成后按esc,再:wq!强制写入,若改错了或者打开了不是要修改的那个文件直接:q!,强制退出),下面安装SSH、配置SSH无密码登陆
安装SSH、配置SSH无密码登陆
集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

$sudo apt-get install openssh-server

安装后,使用如下命令登陆本机,检测安装是否成功:

$ssh localhost

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

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

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

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。因为hadoop上面跑JAVA程序,所以需要JAVA环境,下面介绍安装JAVA环境
安装Java环境
为图方便,这边直接通过命令安装 OpenJDK 7

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

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

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

该命令会输出一个路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径了。如输出路径为 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,则我们需要的路径为 /usr/lib/jvm/java-7-openjdk-amd64。
接着需要配置一下 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置

$vim ~/.bashrc       #如果提示错误请执行 $sudo vim ~/.bashrc 

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

export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64"

接着还需要让该环境变量生效,执行如下代码:

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

设置好后我们来检验一下是否设置正确:

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

提示3

这样,Hadoop 所需的 Java 运行环境就安装好了,下面是重点hadoop安装
hadoop2安装
Hadoop 2 可以通过 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,一般选择下载最新的稳定版本,即下载 "stable" 下的 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。

如果读者是使用虚拟机方式安装Ubuntu系统的用户,请用虚拟机中的Ubuntu自带firefox浏览器访问本指南,再点击下面的地址,才能把hadoop文件下载虚拟机ubuntu中。请不要使用Windows系统下的浏览器下载,文件会被下载到Windows系统中,虚拟机中的Ubuntu无法访问外部Windows系统的文件,造成不必要的麻烦。
(这里说一句场外的,我给东软的学生提供一个福利,还有就是看到这篇博客的有缘人,我们微光有自己的云盘,我把下载好的hadoop上传到自己的云盘了,你们可以用学校的内网直接下载,大概6s左右就下完了hadoop-2.7.1下载地址,账号密码都是zhangrui,还有你们不要乱传自己的东西上来,我只开放到3月8号)
下载完 Hadoop 文件后一般就可以直接使用。

$sudo tar -zxf ~/下载/hadoop-2.7.1.tar.gz -C /usr/local    # 解压到/usr/local中
$cd /usr/local/
$sudo mv ./hadoop-2.7.1/ ./hadoop            # 将文件夹名改为hadoop
$sudo chown -R hadoop ./hadoop       # 修改文件权限

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

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

因为我上课老师要求是Hadoop伪分布式配置,所以我这里只讲Hadoop伪分布式配置

Hadoop伪分布式配置

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

$cd /usr/local/hadoop/etc/hadoop/
$ls     #看是否存在2个配置文件 core-site.xml 和 hdfs-site.xml
$sudo vim core-site.xml

下面我们修改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:

$sudo vim 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>

配置文件修改完成,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
下面我们直接执行 NameNode 的格式化:

$cd /usr/local/hadoop
$./bin/hdfs namenode -format  #这里再提一下,后面需要输入好几次密码,我昨天装的时候出现了,正常输密码就对了

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

如果在这一步时提示 Error: JAVA_HOME is not set and could not be found. 的错误,则说明之前设置 JAVA_HOME 环境变量那边就没设置好,请按教程先设置好 JAVA_HOME 变量,否则后面的过程都是进行不下去的。我这里昨天帮别人装的时候出现了这个状况,检查了一遍,问题出在他没有在hadoop用户下设置JAVA_HOME路径,所以如果出现同样错误请切换用户至hadoop用户下面,再重新配置JAVA_HOME变量,其他的步骤都不用变,没问题。
接着开启 NameNode 和 DataNode 守护进程。

$./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

若出现如下SSH提示,输入yes即可。
启动时可能会出现如下 WARN 提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable WARN 提示可以忽略,并不会影响正常使用。

到这里基本上就算是装完成了,当然你们肯定迫不及待的想知道自己成功没有,输入:

$jps

若返回4个参数应该是成功过的,我现在初学也不知道那4个参数什么含义,写了挺久的了,其实mac版的我上课也装了,抽空写下篇mac下hadoop安装教程
本片文章参考厦门大学数据库实验室文章来源

Responses