Ubuntu安装Hadoop2进行单机和伪分布配置
---------------------------------------------------
单机配置(Local Standalone Mode):
官方说法:Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
伪分布配置(Pseudo-Distributed Mode):
---------------------------------------------------------------------
环境:
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目录 用于下面步骤3
exit 命令先退出ssh连接
3.生成密钥对,达到免密码登录
<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,否则在接下来的步骤中可能会出错。
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/input 3.使用-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 文件夹:5.查看处理结果 ./bin/hdfs dfs -cat /usr/hadoop/output/*
- ./bin/hdfs dfs -rm -r output # 删除 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集群
----------------------------------------------------------------------
参考资料: