hadoop分为单击模式,伪分布式和分布式,本文安装的是分布式。
需要先对linux系统做一些优化,编辑/etc/security/limits.conf
* soft nofile 10240
* hard nofile 10240
* soft noproc 10240
* hard noproc 10240
nofile是设置限制打开的文件数,noproc是限制用户打开的进程数,*代表的是所有用户
然后执行
ulimit -n 10240
ulimit -c 10240
下载hadoop2.6.0.tar.gz
然后登陆hadoop账户解压至主文件夹下
tar xvzf hadoop-2.6.0
然后将hadoop-2.6.0移动到主文件夹下,找到etc/hadoop下的hadoop-env.sh文件,打开将里面的jdk配置成你自己实际的jdk路径。
然后编辑core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.55:9000</value>
</property>
<-- 设置同时处理文件上限个数 -->
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/hdfsdata-2.6</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://192.168.1.55:9001</value>
</property>
</configuration>
masters
h1
slaves
h2
h3
注意:1、hadoop2.6没有mapred-site.xml,需要自己考一个,
2、hadoop2.6没有masters,需要自己拷一个
3、关闭防火墙或者添加9000、9001、50010端口为信任
然后将配置好的hadoop拷贝到各个节点上
scp -r hadoop2.6.0 h2:/home/hadoop
拷贝完成后,格式化namenode
bin/hadoop namenode -format
最后启动hadoop
sbin/start-all.sh
若成功访问则说明namenode部署成功,
还有一种办法就是找到jdk的安装目录输入一下命令
bin/jps
看看namenode还有secondarynamenode以及resourcemanager是否成功启动,slave节点则是datanode
奇怪的是我这里并没有job或者track,看了下start-all.sh里并没有启动,不过一直没有什么问题,不知道是不是2.6版本没有这些,有知道的顺便说下吧
===============================================
这里是补上的
================================================
用jps只是看到服务是否启动,下面用一个简单的测试来演示是否成功。再声明一下,我用的是hadoop-2.6.0
首先切换到主目录,并且创建出一个input文件夹,文件夹下面有两个文本文件
cd ~
makdir input
echo "hello word">text1.txt
echo "hello hadoop>test2.text
然后切换到hadoop目录
cd ~
cd hadoop-2.6.0
先测试hdfs,将刚刚创建的文件上传到集群里
bin/hadoop dfs ../input /in
看一下是否成功
bin/hadoop dfs -ls /in/*
应该会输出一个文件列表
然后测试mapreduce,用hadoop自带的wordcount,hadoop2.6和其他不一样,要以如下的命令运行wordcount
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /in /out
“/”代表的是hdfs的根目录,不是以前的“./”
运行命令后再看一下根目录下的文件
bin/hadoop dfs -ls /
发现里面不仅有in目录,还多了out和temp目录,打开out目录
bin/hadoop dfs -cat /out/*
下面有两个文件,一个是_SUCCESS一个是part-r-00000,打开文件,我这里两个都打开了,不过效果是差不多的
bin/hadoop dfs -cat /out/*
下面是运行结果
[hadoop@h1 hadoop-2.6.0]$ bin/hadoop dfs -cat /out/*
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
hadoop 1
hello 2
word 1