Hadoop安装

http://www.powerxing.com/install-hadoop/大神发表的链接。仿照自己安装一遍

装好了 Ubuntu 系统之后,在安装 Hadoop 前还需要做一些必备工作。

1创建hadoop用户

如果你安装 Ubuntu 的时候不是用的 “hadoop” 用户,那么需要增加一个名为 hadoop 的用户。

首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户

 

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

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

sudo passwd hadoop

可为 hadoop 用户增加管理员权限,方便部署,

sudo adduser hadoop sudo

 

最后注销当前用户(点击屏幕右上角的齿轮,选择注销),在登陆界面使用刚创建的 hadoop 用户进行登陆

2、更新apt

hadoop 用户登录后,我们先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了。按 ctrl+alt+t 打开终端窗口,执行如下命令:

sudo apt-get update

 

若出现如下 “Hash校验和不符” 的提示,可通过更改软件源来解决。若没有该问题,则不需要更改。

3、安装SSH、配置SSH无密码登陆

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server

sudo apt-get install openssh-server

 

安装后,可以使用如下命令登陆本机:

ssh localhost

 

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

 

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

 

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

 

exit                           # 退出刚才的 ssh localhost

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost

ssh-keygen -t rsa              # 会有提示,都按回车就可以

cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

 

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

 

4、安装Java环境

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

 

JREJDK的区别

JREJava Runtime EnvironmentJava运行环境),是运行 Java 所需的环境。JDKJava Development KitJava软件开发工具包)即包括 JRE,还包括开发 Java 程序所需的工具和类库。

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

 

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

Shell 命令

该命令会输出一个路径,除去路径末尾的 “/bin/javac”,剩下的就是正确的路径了。如输出路径为 /usr/lib/jvm/java-7-openjdk-amd64/bin/javac,则我们需要的路径为 /usr/lib/jvm/java-7-openjdk-amd64

 

接着配置 JAVA_HOME 环境变量,为方便,我们在 ~/.bashrc 中进行设置(扩展阅读: 设置Linux环境变量的方法和区别):

 

vim ~/.bashrc

Shell 命令

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

 

export JAVA_HOME=JDK安装路径

Shell

如下图所示

 

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

 

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

Shell 命令

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

 

echo $JAVA_HOME     # 检验变量值

java -version

$JAVA_HOME/bin/java -version  # 与直接执行 java -version 一样

Shell 命令

如果设置正确的话,$JAVA_HOME/bin/java -version 会输出 java 的版本信息,且和 java -version 的输出结果一样,如下图所示:

 

5、安装 Hadoop 2

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 源代码,需要进行编译才可使用。

 

下载时强烈建议也下载 hadoop-2.x.y.tar.gz.mds 这个文件,该文件包含了检验值可用于检查 hadoop-2.x.y.tar.gz 的完整性,否则若文件发生了损坏或下载不完整,Hadoop 将无法正常运行。

 

 

我们选择将 Hadoop 安装至 /usr/local/ 中:

 

sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/local    # 解压到/usr/local

cd /usr/local/

sudo mv ./hadoop-2.6.0/ ./hadoop            # 将文件夹名改为hadoop

sudo chown -R hadoop ./hadoop       # 修改文件权限

Shell 命令

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

 

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

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

 

现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcountterasortjoingrep 等。

 

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

 

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

rm -r ./output

7adoop伪分布式配置

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

 

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

 

修改配置文件 core-site.xml (通过 gedit 编辑会比较方便: gedit ./etc/hadoop/core-site.xml),将当中的

 

 

HHadoop配置文件说明

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

 

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

 

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

 

./bin/hdfs namenode -format

Shell 命令

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

 

接着开启 NameNode DataNode 守护进程。

./sbin/start-dfs.sh

若出现如下SSH提示,输入yes即可。

启动 Hadoop 时提示 Could not resolve hostname

如果启动 Hadoop 时遇到输出非常多“ssh: Could not resolve hostname xxx”的异常情况

修改:

这个并不是 ssh 的问题,可通过设置 Hadoop 环境变量来解决。首先按键盘的 ctrl + c 中断启动,然后在 ~/.bashrc 中,增加如下两行内容(设置过程与 JAVA_HOME 变量一样,其中 HADOOP_HOME Hadoop 的安装目录)

 

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

Shell

保存后,务必执行 source ~/.bashrc 使变量设置生效,然后再次执行 ./sbin/start-dfs.sh 启动 Hadoop

 

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

 

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

 

8、运行Hadoop伪分布式实例

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

 

./bin/hdfs dfs -mkdir -p /user/hadoop

Shell 命令

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

 

./bin/hdfs dfs -mkdir input

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

Shell 命令

复制完成后,可以通过如下命令查看文件列表:

 

./bin/hdfs dfs -ls input

Shell 命令

伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹,输出结果 output 文件夹都删掉来验证这一点)。

 

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

 

./bin/hdfs dfs -cat output/*

使用的是默认的文件路径

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

9、启动YARN

(伪分布式不启动 YARN 也可以,一般不会影响程序执行)

 

有的读者可能会疑惑,怎么启动 Hadoop 后,见不到书上所说的 JobTracker TaskTracker,这是因为新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也称为 YARNYet Another Resource Negotiator)。

 

YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,YARN 的更多介绍在此不展开,有兴趣的可查阅相关资料。

 

上述通过 ./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。

 

首先修改配置文件 mapred-site.xml,这边需要先进行重命名:

 

mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml

然后再进行编辑,同样使用 gedit 编辑会比较方便些 gedit ./etc/hadoop/mapred-site.xml

<configuration>

        <property>

             <name>mapreduce.framework.name</name>

             <value>yarn</value>

        </property>

</configuration>

XML

接着修改配置文件 yarn-site.xml

<configuration>

        <property>

             <name>yarn.nodemanager.aux-services</name>

             <value>mapreduce_shuffle</value>

            </property>

</configuration>

XML

然后就可以启动 YARN 了(需要先执行过 ./sbin/start-dfs.sh):

 

./sbin/start-yarn.sh      # 启动YARN

./sbin/mr-jobhistory-daemon.sh start historyserver  # 开启历史服务器,才能在Web中查看任务运行情况

Shell 命令

开启后通过 jps 查看,可以看到多了 NodeManager ResourceManager 两个后台进程,如下图所示。

 

启动 YARN 之后,运行实例的方法还是一样的,仅仅是资源管理方式、任务调度不同。观察日志信息可以发现,不启用 YARN 时,是 “mapred.LocalJobRunner” 在跑任务,启用 YARN 之后,是 “mapred.YARNRunner” 在跑任务。启动 YARN 有个好处是可以通过 Web 界面查看任务的运行情况:http://localhost:8088/cluster,如下图所示。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值