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

ubuntu部署hadoop2.7.1之单机模式与伪分布式模式

2017-01-20 21:01 441 查看
单机模式(standalone
单机模式是Hadoop的默认模式。当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有3个XML文件均为空。当配置文件为空时,Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。
伪分布模式(Pseudo-DistributedMode
伪分布模式在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。
全分布模式(FullyDistributed Mode

Hadoop守护进程运行在一个集群上。

一.ubuntu平台上安装JDK

1.将下载好的tar.gz 文件解压到一个文件夹下。



2.然后,配置环境变量。方法如下:

   打开终端输入
sudo gedit /etc/profile




输入密码后可以看到:



配置环境变量(在profile文件到最后加上这些代码):

#set java environment

JAVA_HOME=/home/hadoop/java/jdk1.8.0_05

export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$PATH

如下图:



上面到JAVA_HOME的值是我机器上jdk的文件路径。



最后保存文件即可。

为了是环境变量生效,需要注销一下当前用户,重新登录后在终端中输入(验证是否配置成功)
java -version




二.部署hadoop之单机模式与伪分布式模式

1. 将下载好的hadoop解压,重新命名为hadoop(这是为了方便以后到操作)。



进入etc/hadoop文件夹下,在hadoop-env.sh文件中做修改,在第25行左右到位置中有export JAVA_HOME=*******这样到字样,修改JAVA_HOME的值为你机器中jdk到文件路径即可,这里到值和/etc/profile是相同的。



现在就可以进行单机模式了(省略)。

2. 伪分布式模式配置

这里需要修改etc/hadoop文件夹中到2个文件(现在可以不启动yarn)。分别是core-site.xml、hdfs-site.xml 两个文件

具体修改内容如下:(file:/home/hadoop/hadoop...,红色部分,系统用户名不同,相应的路径也不同,这里的用户是hadoop)
core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/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:

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop/tmp/dfs/data</value>
</property>
</configuration>

这样就配置好hadoop了,由于haoop不同结点间到通信是用的ssh,所以我们还需要安装ssh

在ubnuntu下直接在终端中输入

sudo apt-get install openssh-server


如果提示找不到源,更新ubuntu到软件中心即可

sudo apt-get update
这样就安装完成了ssh。下面需要设置免密钥登录ssh了。输入下面两行代码即可:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys



这样以后登录本地ssh就不需要密码了。

这里稍微解释一下:ssh-keygen代表生成密钥;-t(注意区分大小写)表示指定生成的密钥类型,dsa是dsa密钥认证的意思,即密钥类型;-P用于提供密语;-f指定生成的密钥文件。然后把id_dsa.pub(公钥)追加到授权的key里面去。
完成了部署。

三.运行wordcount例子

(1)首先格式化namenode并,开启hadoop相关进程(一般启动前把tmp里面的文件全部删除)

bin/hdfs namenode -format
sbin/start-dfs.sh
(2)查看所有进程



(3)把本地到hadoop/input (自己建立的)文件夹中到文件上传到hdfs文件系统到input文件夹下

bin/hdfs dfs -mkdir /input
bin/hdfs dfs -put input/* /input


查看文件是否上传到hdfs

bin/hdfs dfs -ls /input


bin/hdfs dfs -cat /input/word



(4)下面即可运行wordcount了

bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output



(5)查看结果可用下面这条命令

bin/hdfs dfs -cat /output/*



也可以将运行结果取回到本地:

rm -r ./output # 先删除本地的 output 文件夹(如果存在)
bin/hdfs dfs -get /output ./output # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*



Hadoop 运行程序时,输出目录不能存在,否则会提示错误 "org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output
already exists" ,因此若要再次执行,需要执行如下命令删除 output 文件夹:

bin/hdfs dfs -rm -r output

(6)关闭进程

sbin/stop-dfs.sh
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息