您的位置:首页 > 运维架构

Ubuntu安装Hadoop2进行单机和伪分布配置

2017-04-27 12:05 190 查看
Ubuntu安装Hadoop2进行单机和伪分布配置---------------------------------------------------单机配置(Local Standalone Mode):官方说法:Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单Java 进程,方便进行调试。伪分布配置(Pseudo-DistributedMode):

官方说法:Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,

节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

---------------------------------------------------------------------环境:Ubuntu15.10  Hadoop2.7.1  java环境 java-7-openjdk----------------------------------------------------------------------写在前面:本文是根据Hadoop官方帮助文档关于配置单机和伪分布式的教程所编写其实安装测试过程都比较简单,但是官网上的教程比较简单笼统,对于新手来说无疑是学习Hadoop系统的一大门槛,所以在这里详细写出我配置的过程,但过程基本和官网相差不大。可以参考官方教程:Hadoop官方教程:单机和伪分布配置开始之前我有三点要指出:①哪些细节看不懂的请百度②哪些细节有问题的请Google③哪些概念不懂的请百度百科----------------------------------------------------------------------目录:一.Ubuntu下创建hadoop用户组和用户二.安装ssh服务和配置ssh无密码登录三.Java环境(JDK配置)四.安装Hadoop2五.单机配置过程  六.伪分布配置七.配置PATH环境变量-----------------------------------------------------------------------一.Ubuntu下创建hadoop用户组和用户这里的目的是为了之后要做涉及到hadoop应用的工作的时候可以单独用该用户来操作。1.创建hadoop用户组2.创建hadoop用户并加入到hadoop用户组 , -g hadoop 是指后面的用户加入到该组的意思’3.给新建hadoop用户设立密码 passwd hadoop  来设置,hadoop是用户名4.给新建的用户权限 打开/etc/sudoers文件5.切换到新建的用户,接下来的工作都在hadoop用户下进行操作可以用 su 用户名  命令来切换用户也可以直接注销切换二.安装ssh服务和配置ssh无密码登录目的:通常集群、单节点模式都用到 ssh 登陆,Ubuntu 默认已安装了 SSH client(用来登录),此外还需要安装 SSH server(用来可以被登录连接)1.安装ssh server 2.登录ssh     ssh localhost  输入密码来登录可以用上面的命令来登录,但是每次这样链接都要输入密码很麻烦,所以可以生成密钥对来处理这一步非必须,但是能方便以后配置上面的命令后会在 /home/hadoop/下生成 .ssh目录  用于下面步骤3exit  命令先退出ssh连接3.生成密钥对,达到免密码登录cd ~/.ssh/进入目录ssh-keygen -t rsa# 会有提示,都按回车就可以cat ./id_rsa.pub >> ./authorized_keys# 加入授权再ssh localhost登录就发现不用密码就能登录了三.Java环境(JDK配置)oracle JDK 或者 OpenJDK 区别自行百度,Ubuntu15.10自带Openjdk7这里用自带的Openjdk7来进行下面配置,需要换装其他版本的请自行百度1.获取openjdk7的目录 update-alternatives --list java 列出当前安装jdk的目录这里要注意,自带的Openjdk7并不像大多数网上说的用whereis java或其他来获取目录路径这里我们记下路径 /usr/lib/jvm/java-7-openjdk-i386四.安装Hadoop2下载地址:下载Hadoop1.下载好Hadoop2后,解压到/usr/local/目录下 如下面的 hadoop-2.7.12.改名 hadoop-2.7.1 为hadoop 非必须但是比较简便3.把hadoop文件夹的权限给hadoop用户管理4.测试hadoop安装情况cd hadoop./bin/hadoop version5.配置hadoop中java的路径编辑文件 usr/local/hadoop/etc/hadoop/hadoop-env.sh添加export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386 注意=号后面不能有空格 修改好后保存。注意:原来是使用系统环境变量当中JAVA_HOME我把原来的注视掉了,其实到系统环境中配置和这里配置是一样的所以我直接在这里配置,而把这里原来的注释掉了,可以看图片中添加代码的下一行。6.设置系统环境变量包含hadoop路径gedit~/.bashrc 命令 .bashrc和其他几个环境文件的区别请自行百度,这个文件位置在root/ 下添加export HADOOP_HOME=/usr/local/hadoopexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native之后执行source ~/.bashrc 让环境生效 运行之后只有当前运行命令这个终端可以得到生效的效果,其他终端是没效果的,需要重启解决----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------到这里 我们的标准所需就已经安装好了--------------------------------------五.单机配置过程下面是运行hadoop自带的例子来进行单机过程,Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括wordcount、terasort、join、grep 等。在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到output 文件夹中。第一步是创建input 文件夹第二步是拷贝所有.xml 文件到input文件夹,这里其实是随便找一些文件当作处理字符串查找的来源而已第三步执行Hadoop操作注意:output文件夹自动创建,而且创建的时候如果存在同样的文件夹则会出错,所以当再次实验的时候要先删除已有的output文件夹。执行完最后一句命令后会出现下面的东西 则说明成功了六.伪分布配置伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 在etc/hadoop/里Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。1.修改core-site.xml文件gedit ./etc/hadoop/core-site.xml 命令将最后的
<configuration>
</configuration>
改为:<configuration>        <property>             <name>hadoop.tmp.dir</name>             <value>file:/usr/local/hadoop/tmp</value>             <description>temporary directories.</description>        </property>        <property>             <name>fs.defaultFS</name>             <value>hdfs://localhost:9000</value>        </property></configuration>
保存2.修改hdfs-site.xml文件 gedit ./etc/hadoop/hdfs-site.xml命令将最后的
<configuration>
</configuration>
改为:
<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 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件)因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此)不过若没有配置 hadoop.tmp.dir参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。3.格式化文件系统$ bin/hdfs namenode -format成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示
4.开启namenode和datanode守护进程
$ sbin/start-dfs.sh
注:启动日志被写进/usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log  可以查看该日志来了解出错情况
5.运行jps命令查看启动情况
若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”
(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)
如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。
6.成功启动后,浏览器访问 http://localhost:50070 
接下来是进行伪分布处理实例:
前面我们运行的是单机实例,现在我们运行伪分布实例,单机实例中我们的数据来源是本地的数据,而伪分布需要的数据来自HDFS系统1.在HDFS系统中建立用户目录 ./bin/hdfs dfs -mkdir -p /usr/hadoop
2.创建数据来源文件夹input和像前面单机实例一样将一些数据文件复制到input里面./bin/hdfs dfs -mkdir /usr/hadoop/input./bin/hdfs dfs -put ./etc/hadoop/*.xml /usr/hadoop/input3.使用-ls 命令 查看创建目录情况./bin/hdfs dfs -ls /usr/hadoop/input
4.运行处理./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /usr/hadoop/input /usr/hadoop/output 'dfs[a-z.]+'注意:Hadoop 运行程序时,输出目录不能存在,否则会提示错误,因此若要再次执行,需要执行如下命令删除 output 文件夹:
./bin/hdfs dfs -rm -r output # 删除 output 文件夹5.查看处理结果./bin/hdfs dfs -cat /usr/hadoop/output/*
6.将HDFS系统中的文件取回本地
rm -r ./output    # 先删除本地的 output 文件夹(如果存在)./bin/hdfs dfs -get output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机cat ./output/*
7.停止Hadoop./sbin/stop-dfs.sh注意:下次启动 hadoop 时,无需进行 NameNode 的格式化,只需要运行 ./sbin/start-dfs.sh 就可以!
七.配置PATH环境变量
在这里额外讲一下 PATH 这个环境变量(可执行 echo $PATH 查看,当中包含了多个目录)。例如我们在主文件夹 ~ 中执行 ls 这个命令时,实际执行的是 /bin/ls 这个程序,而不是 ~/ls 这个程序。系统是根据 PATH 这个环境变量中包含的目录位置,逐一进行查找,直至在这些目录位置下找到匹配的程序(若没有匹配的则提示该命令不存在)。上面的教程中,我们都是先进入到 /usr/local/hadoop 目录中,再执行 sbin/hadoop,实际上等同于运行/usr/local/hadoop/sbin/hadoop。我们可以将 Hadoop 命令的相关目录加入到 PATH 环境变量中,这样就可以直接通过 start-dfs.sh 开启 Hadoop,也可以直接通过 hdfs 访问 HDFS 的内容,方便平时的操作。同样我们选择在 ~/.bashrc 中进行设置(vim ~/.bashrc,与 JAVA_HOME 的设置相似),在文件最前面加入如下单独一行:export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin添加后执行 source ~/.bashrc 使设置生效,生效后,在任意目录中,都可以直接使用 hdfs 等命令了,读者不妨现在就执行 hdfs dfs -ls input 查看 HDFS 文件试试看。----------------------------------------------------------------------
到这里单机和伪分布用到的知识都已经讲完
后面两个额外可能需要了解的东西请自行百度
①启动YARN②安装Hadoop集群
----------------------------------------------------------------------
参考资料:
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.htmlhttp://www.powerxing.com/install-hadoop/
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: