前言:java
本文章是转载的,本身又加上了一些本身的笔记整理的node
详细地址请查看Ubuntu 12.04搭建hadoop单机版环境linux
Hadoop的三种运行模式apache
独立模式:无需任何守护进程,全部程序都在单个JVM上执行。ubuntu
伪分布模式:Hadoop守护进程运行在本地机器上,模拟一个小规模的集群。vim
全分布模式:Hadoop守护进程运行在一个集群中。bash
一. 安装Ubuntu;服务器
二. 在Ubuntu下建立hadoop用户组和用户;ssh
1. 建立hadoop用户组:jvm
sudo groupadd hadoop |
如图:
2. 建立hadoop用户:
sudo useradd -ms /bin/bash -g hadoop hadoop |
如图:
3. 给hadoop用户添加sudo权限,打开/etc/sudoers文件:
sudo gedit /etc/sudoers |
按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户一样的权限。
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL,
hadoop ALL=(ALL:ALL) ALL |
如图:
三. 在Ubuntu下安装JDK
使用以下命令执行便可:
sudo apt-get install openjdk-6-jre |
(这里我本身下载的jdk,具体的安装方法见个人另外一篇Linux下安装JDK和Eclipse)
如图:
四. 修改机器名
每当ubuntu安装成功时,咱们的机器名都默认为:ubuntu ,但为了之后集群中可以容易分辨各台服务器,须要给每台机器取个不一样的名字。机器名由 /etc/hostname文件决定。
1. 打开/etc/hostname文件:
sudo gedit /etc/hostname |
2. 将/etc/hostname文件中的ubuntu改成你想取的机器名。这里我取"dubin-ubuntu"。 重启系统后才会生效。
3. 为了完全的改变你的主机名,还须要更改vim /etc/hosts,将其中的
127.0.1.1改为和你hostname中同样的名字
五. 安装ssh服务
这里ssh能够实现远程登陆和管理,具体能够参考其余相关资料。安装ssh的目的就是为了启动守护进行,且必须是无密码登录的。
安装openssh-server,
sudo apt-get install ssh openssh-server |
这时假设您已经安装好了ssh,您就能够进行第六步了哦~
6、 创建ssh无密码登陆本机
首先要转换成hadoop用户,执行如下命令:
su - hadoop |
如图:
ssh生成密钥有rsa和dsa两种生成方式,默认状况下采用rsa方式。
1. 建立ssh-key,,这里咱们采用rsa方式:
ssh-keygen -t rsa -P "" |
如图:
(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)
2. 进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys受权文件中,开始是没有authorized_keys文件的:
cd ~/.ssh cat id_rsa.pub >> authorized_keys |
如图:
(完成后就能够无密码登陆本机了。)
3. 登陆localhost:
ssh localhost |
如图:
( 注:当ssh远程登陆到其它机器后,如今你控制的是远程的机器,须要执行退出命令才能从新控制本地主机。)
4. 执行退出命令:
exit |
七. 安装hadoop
这里个人安装版本为:hadoop-1.1.2(http://www.apache.org/dyn/closer.cgi/hadoop/common/ )
1. 假设hadoop-0.20.203.tar.gz在桌面,将它复制到安装目录 /usr/local/下:
sudo cp hadoop-1.1.2.tar.gz /usr/local/ |
2. 解压hadoop-1.1.2.tar.gz:
cd /usr/local sudo tar -zxf hadoop-1.1.2.tar.gz |
3. 将解压出的文件夹更名为hadoop:
sudo mv hadoop-1.1.2 hadoop1.1.2 |
4. 将该hadoop1.1.2文件夹的属主用户设为hadoop:
sudo chown -R hadoop:hadoop hadoop1.1.2 |
5. 打开hadoop/conf/hadoop-env.sh文件:
vim hadoop1.1.2/conf/hadoop-env.sh |
6. 配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,而后加上本机jdk的路径):
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk |
这个主要就是为了配置hadoop运行环境的jdk路径
7. 打开conf/core-site.xml文件:
sudo gedit hadoop/conf/core-site.xml |
编辑以下:
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
该文件主要是 fs.default.name,是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号)。该配置文件主要用于设置Hadoop的默认文件系统,而文件系统由URI指定,这里咱们设置的是hdfs文件系统。这里的这种配置方式是属于伪分布式模式,当配置为全分布式模式的时候,须要改成hdfs://namenod/。集群里面的每一台机器都须要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才能够被使用。独立的客户端程序经过这个URI跟DataNode交互,以取得文件的块列表。
8. 打开conf/mapred-site.xml文件:
vim hadoop1.1.2/conf/mapred-site.xml |
编辑以下:
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
该配置文件主要用于配置JobTracker的主机(或者IP)和端口,一样这是伪分布模式,当在全分布式模式中value的值为jobtracker:8021
9. 打开conf/hdfs-site.xml文件:
vim hadoop/conf/hdfs-site.xml |
编辑以下:
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
dfs.replication -它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个 数字并无上限,但更多的备份可能并无做用,并且会占用更多的空间)。少于三个的备份,可能会影响到数据可靠性(系统故障时,也许会形成数据丢失)
dfs.data.dir - 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要彻底相同,由于每台机器的环境极可能是不同的。但若是每台机器上的这个路径都是统一配置的话,会使工做变得简单一些。默认的状况下,它的值hadoop.tmp.dir, 这个路径只能用于测试的目的,由于,它极可能会丢失掉一些数据。因此,这个值最好仍是被覆盖。
dfs.name.dir - 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不须要使用到它。
10. 打开conf/masters文件,添加做为secondarynamenode的主机名,做为单机版环境,这里只需填写 localhost 就Ok了。
vim hadoop/conf/masters |
11. 打开conf/slaves文件,添加做为slave的主机名,一行一个。做为单机版,这里也只需填写 localhost就Ok了。
vim hadoop/conf/slaves |
八. 在单机上运行hadoop
1. 进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时必定要有该操做,
cd /usr/local/hadoop/ bin/hadoop namenode -format |
2. 当你看到下图时,就说明你的hdfs文件系统格式化成功了。
3. 启动bin/start-all.sh:
bin/start-all.sh |
4. 检测hadoop是否启动成功:
jps |
若是有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五个进程,就说明你的hadoop单机版环境配置好了!
以下图:
后记:
1 该部署安装环境以下:
VirtualBox-4.2.16-86992-Win
ubuntu12.04
jdk-6u33-linux-i586.bin
hadoop-1.1.2.tar.gz
通过测试彻底能够正常运行
2 在执行hadoop命令的时候,都是调用hadoop/bin中的命令,能够将hadoop安装路径设置到path中,这样每次执行hadoop就不用加上绝对路径了。具体的作法以下:
sudo vim /etc/profile添加两句
export HADOOP_INSTALL=/usr/local/hadoop1.1.2
PATH=$HADOOP_INSTALL/bin:$PATH 而后注销后输入hadoop version便可
3 因为在复制hadoop的时候已经建立了专门的用户与用户组来操做hadoop,必定要为该hadoop安装ssh无密码登录,在安装hadoop的时候,记得也要全称用刚建立的用户来安装,且必定要使用
chown -R hadoop:hadoop hadoop1.1.2来将全部的文件权限改成hadoop用户。在安装后,若是使用jps只是显示几个进程,能够切换到root中,再次执行该命令chown -R hadoop:hadoop hadoop1.1.2
当安装后,若是jps显示的进程不到5个,则能够将hadoop安装目录下生成data1和data2或者datalog1和datalog2删除了,再从新利用bin/hadoop namenode -format
4 分布式存储的角度来讲,集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode做为NameNode的备份。从分布式应用的角度来讲,集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。