首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

单节点(伪分布式)环境停运行Hadoop

2013-10-18 
单节点(伪分布式)环境下运行Hadoop环境:Linux 6.2? 虚拟机去官网下载包:http://mirrors.cnnic.cn/apache/h

单节点(伪分布式)环境下运行Hadoop

环境:Linux 6.2? 虚拟机

去官网下载包:http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-1.2.1/

上传到linux上

一、配置?SSH?

无论是在单机环境还是多机环境中,?Hadoop均采用SSH来访问各个节点的信息。在单机环境中,需要配置?SSH?来使用户?hadoop?能够访问?localhost?的信息。如果没有安装,首先需要安装ssh

  1. sudo?apt-get?install?ssh??

安装完成后要保证防火墙对ssh的端口放行,如果仅是学习可以直接把防火墙关闭:

1)重启后永久性生效:

开启:?chkconfig iptables on

关闭:?chkconfig iptables off

2)即时生效,重启后失效:

开启:?service iptables start

关闭:?service iptables stop

?

其次是配置?SSH使得Hadoop应用能够实现无密码登录:

  1. su?-?hadoop??
  2. ssh-keygen -t dsa -P '' -f?~/.ssh/id_dsa?
  3. cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys ?

第一条命令将当前用户切换为hadoop(如果当前用户就是hadoop,则无需输入),第二条命令将生成一个公钥和私钥对(即id_dsa和?id_dsa.pub两个文件,位于~/.ssh文件夹下),第三条命令使得hadoop用户能够无需输入密码通过SSH访问localhost。这时可 通过以下命令来验证安装是否成功(如果没有提示输入密码直接登录成功,则说明安装成功):

ssh?localhost?//若不需要密码ssh配置好?

二、配置Hadoop

Hadoop的配置文件都放在${HADOOP_HOME}/conf这个文件夹下面,主要是四个配置文件,分别是core-site.xml,hadoop-env.sh,hdsf-site.xml和mapred-site.xml。

(1)修改conf/hadoop--env.sh,设置JAVA_HOME,在该文件中找到如下行,去掉前面的注释。

#?Thejava?implementation?to?use.?Required.??

#?export?JAVA_HOME=/usr/lib/j2sdk1.5-sun??

即使在环境变量里面已经配置了JAVA_HOME,这里也不可以用JAVA_HOME=${JAVA_HOME},一定要写成绝对路径

修改为:

#?Thejava?implementation?to?use.??Required.??

??export?JAVA_HOME=/usr/lib/jvm/jdk1.6.0_27??

?

接着修改HADOOP_PID_DIR的值,将

# The directory where pid files are stored. /tmp by default.

# export HADOOP_PID_DIR=/var/hadoop/pids

改为:

# The directory where pid files are stored. /tmp by default.

export HADOOP_PID_DIR=/opt/hadoop-0.20.2/pids(hadoop目录的下的pids文件夹)

这个值主要是用来存放HADOOP进程的pid文件,由于linux会定时清理/tmp下的文件,所以用默认值的话可能会导致找不到pid文件,使得hadoop进程无法正常运行

?

(2)修改core-site.xml内容如下:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<!-- Put site-specific property overrides in thisfile. -->

<configuration>

?<property>

???<name>fs.default.name</name>

??<value>hdfs://localhost:9000</value>

<!--默认的namenode的端口为8020?-->

?</property>

?<property>

???<name>hadoop.tmp.dir</name>

???<value>/home/hadoop/program/tmp-${user.name}</value>

<!--路径中可以使用用${变量名},但路径名不可以用${...}以及~/...,一定要写成绝对路径-->

??</property>

</configuration>??

?

(3)修改conf/hdfs-site.xml为

<?xml?version="1.0"?>??

<?xml-stylesheet?type="text/xsl"href="configuration.xsl"?>??

<configuration>??

????<property>??

????????<name>dfs.replication</name>??

????????<value>1</value>??

????</property>??

</configuration>??

设置复本数,默认是3

(4)修改conf/mapred-site.xml为:

<?xml?version="1.0"?>??

<?xml-stylesheet?type="text/xsl"href="configuration.xsl"?>??

<configuration>??

??????<property>??

?????????<name>mapred.job.tracker</name>??

?????????<value>localhost:9001</value>??

??????</property>??

</configuration>

jobtracker的ip和端口?

?

三、运行Hadoop(当前用户为hadoop)

???以上操作已经完成对Hadoop的配置,接下来是运行Hadoop。第一步需要进行格式化HDFS,运行脚本主要位于${HADOOP_HOME}/bin目录 下,注意HADOOP_HOME为解压缩之后的Hadoop根目录,此处为/home/hadoop/program/hadoop-0.20.1。格式 化HDFS命令为:(假设当前目录是已经在${HADOOP_HOME}/bin/)

./hadoop?namenode?–format ?

若报?

/opt/jdk1.6.0_25/bin/java: cannot execute binary file

证明jdk与系统的位数不合(jdk为64位,系统为32位),换一个32位的jdk就可

启动单节点集群:

./start-all.sh??

这个操作会在本机上启动Namenode,SecondaryNameNode,Datanode,JobTracker和TaskTracker共计5个JVM进程,可以通过java自带的jps命令查看。

jps??

通过jps命令可以查看到进程如下:

TaskTracker??

SecondaryNameNode??

JobTracker??

NameNode??

TaskTracker

?

停止单节点集群:

./stop-all.sh??

另外可以通过以下网址查看节点的运行情况:
http://localhost:50030/ - Hadoop?管理介面
http://localhost:50060/ - Hadoop Task Tracker?状态
http://localhost:50070/ - Hadoop DFS?状态

?

Hadoop测试
(1)创建一个文本1.txt
? [linux-hd1:/usr/hadoop/bin #] vim 1.txt?
(2)文本内容是I Love You Hadoop
? [linux-hd1:/usr/hadoop/bin #] cat 1.txt?
? Hello Word?
(3)在HDFS文件系统上创建一个目录leo
?[linux-hd1:/usr/hadoop/bin #] ./hadoop fs -mkdir /test?
(4)复制文件1.txt到leo目录?
? [linux-hd1:/usr/hadoop/bin #] ./hadoop fs -copyFromLocal 1.txt /test?
(5)显示HDSF文件系统目录下的内容
? [linux-hd1:/usr/hadoop/bin #] ./hadoop fs -ls /test?
? Found 1 items
? -rw-r--r-- 2 grid supergroup 0 2012-09-02 21:08 /leo/1.txt
(6)查看在HDFS文件系统上1.txt内容
? [linux-hd1:/usr/hadoop/bin #] ./hadoop fs -cat /leo/1.txt?
? Hello Word

?测试通过

热点排行