ubuntu16.04 Hadoop安装

来源:互联网 发布:电脑装完系统没有网络 编辑:程序博客网 时间:2024/04/20 09:26

主要参考: 在Ubuntu 14.04 LTS上安装部署Hadoop 2.7.1(伪分布式)

配置ssh免密码登录

  • 安装ssh server:
sudo apt-get install openssh-servercd ~/.ssh/                        # 若没有该目录,请先执行一次ssh localhostssh-keygen -t rsa                  # 会有提示,都按回车就可以cat id_rsa.pub >> authorized_keys  # 加入授权使用ssh localhost试试能否直接登录 

配置java环境

参考 Ubuntu16.04下Java环境安装与配置。
到Oracle官网下载JDK1.7。下载jdk-7u79-linux-x64.tar.gz。
由于准备将JDK安装至/usr/lib/jvm下,所以先到/usr/lib/目录下建立jvm文件夹

cd /usr/lib/sudo mkdir jvm

解压下载的安装包至jvm文件夹(jdk1.7.0_79)

sudo tar zxvf /home/linuxidc/桌面/jdk-7u79-linux-x64.tar.gz -C /usr/lib/jvm 

设置JAVA_HOME:

nano ~/.bashrc

在第一行前面增加:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

保存退出。
使设置立即生效:

source ~/.bashrc

测试JAVA_HOME是否设置成功,输出了上面设置的路径表示成功:
echo $JAVA_HOME

安装Hadoop2.7.4

下载文件,http://hadoop.apache.org/releases.html,选择2.7.4的binary格式下载。文件名为:hadoop-2.7.4.tar.gz。
我们选择将 Hadoop 安装至/usr/local/

sudo tar -zxvf  /Download/hadoop-2.7.4.tar.gz -C /usr/local                                #下载位置cd /usr/local/sudo mv ./hadoop-2.7.4/ ./hadoop          # 将文件夹名改为hadoopsudo chown -R linuxidc ./hadoop           # 修改文件权限

测试安装是否成功,如果出现命令帮助表示成功:/usr/local/hadoop/bin/hadoop
配置环境变量
nano ~/.bashrc
打开界面后,在之前配置的JAVA_HOME后面输入:

export HADOOP_INSTALL=/usr/local/hadoopexport PATH=$PATH:$HADOOP_INSTALL/binexport PATH=$PATH:$HADOOP_INSTALL/sbinexport HADOOP_MAPRED_HOME=$HADOOP_INSTALLexport HADOOP_COMMON_HOME=$HADOOP_INSTALLexport HADOOP_HDFS_HOME=$HADOOP_INSTALLexport YARN_HOME=$HADOOP_INSTALL

使设置立即生效:source ~/.bashrc
检查是否安装成功,执行命令,如果出现命令帮助表示成功:hdfs

注释:截止今日最新版本是2.8.1,我下了个2.7.4。
/etc/profile 和 ~/.hashrc两个文件更改都可以

配置伪分布式

切换至配置文件目录:

cd /usr/local/hadoop/etc/hadoop
  • 配置 core-site.xml,执行命令:nano core-site.xml
    将文件中的<configuration></configuration>替换为:
<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,执行命令:nano 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>
    关于Hadoop配置项的一点说明:

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

  • 配置mapred-site.xml
    从模板文件复制一个xml,执行命令:mv mapred-site.xml.template mapred-site.xml
    执行命令:nano mapred-site.xml
    将文件修改为
<configuration>  <property>  <name>mapreduce.framework.name</name>  <value>yarn</value>  </property></configuration>

或者:

<configuration>   <property>      <name>mapred.job.tracker</name>      <value>localhost:9001</value>   </property></configuration>

注释:yarn是一个从mapreduce中提取出来的资源管理模块,但是在单机伪分布式的环境中是否要启动该服务就要因情况讨论了,因为yarn会大大减慢程序执行速度,所以本教程同时记录了配置yarn和不配置yarn两种方案。关于yarn更多知识请移步后问相关阅读。
这样配置后可跳过配置yarn-site.xml,因为不会调用这个模块,同时也不会出现最后一栏中出现的问题。

  • 配置yarn-site.xml,执行命令:nano yarn-site.xml,修改为:
<configuration>  <property>  <name>yarn.nodemanager.aux-services</name>  <value>mapreduce_shuffle</value>  </property>  <property>  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  <value>org.apache.hadoop.mapred.ShuffleHandler</value>  </property></configuration>

配置完成后,执行格式化:hdfs namenode -format。倒数第五行出现Exitting with status 0 表示成功,若为 Exitting with status 1 则是出错。
这里写图片描述

注释:多次执行hdfs namenode -format 后会导致加载不出来datanode,参考博客hadoop伪分布式下 无法启动datanode的原因及解决办法可知,删除/usr/local/hadoop/tmp/dfs下的data目录,然后重新启动dfs(在hadoop安装路径 /usr/local/hadoop/ 下,运行命令./sbin/start-dfs.sh)即可。

启动hadoop所有的进程:

start-all.sh

注释:这里有一个问题,有的机子配置到这里执行start-all.sh 时会报错:
Error:JAVA_HOME is not set and could not be found

在本机java环境配置正确的前提下,解决方法为:修改hadoop里面hadoop-env.sh文件里面的java路径设置,hadoop-env.sh在hadoop/etc/hadoop目录下,具体修改办法如下:
sudo vim hadoop/etc/hadoop/hdoop-env.sh
将语句export JAVA_HOME=$JAVA_HOME
修改为usr/lib/jvm/jdk1.8.0/jdk1.8.0_144(自己的java路径)
保存后退出即可。
参考:Error:JAVA_HOME is not set and could not be found 解决般的法

查看各个进程是否正常启动,执行:jps。如果一切正常,将看到下列结果:

2583 DataNode
2970 ResourceManager
3461 Jps
3177 NodeManager
2361 NameNode
2840 SecondaryNameNode

访问 http://localhost:50070 可查看相关信息。

出现的问题

然而我的NodeManager失败了,好像是因为空间不足,需要配置yarn。参考hadoop启动没有nodemanager。
原因是:yarn-site.xml配置有点问题。nodemanager要求的内存最低1024MB,hadoop 2.7.3要求至少1536MB的内存。

<configration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configration>

修改后:

<configration><property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property>    <property>        <name>yarn.nodemanager.resource.memory-mb</name>        <value>1536</value>    </property>    <property>        <name>yarn.nodemanager.resource.cpu-vcores</name>        <value>1</value>    </property></configration>

重启集群start-all.sh即可!

相关阅读

【大数据】Linux下安装Hadoop(2.7.1)详解及WordCount运行
Ubuntu14.04下Hadoop2.4.1单机/伪分布式安装配置教程
CentOS安装和配置Hadoop2.2.0
Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)
Ubuntu下Hadoop环境的配置
单机版搭建Hadoop环境图文教程详解
hadoop启动没有nodemanager
yarn相关文档
Hadoop Yarn详解
深入理解Hadoop YARN中的Container概念

原创粉丝点击