hadoop2.7【单节点】单机、伪分布、分布式安装指导
问题导读1.从本文部署实际部署,总结本地模式、伪分布、分布式的区别是什么?
2.单机是否是伪分布?
3.本地模式是否可以运行mapreduce?
static/image/hrline/4.gif
hadoop2.7发布,这一版不太适合用于生产环境,但是并不影响学习:由于hadoop安装方式有三种,并且三种安装方式都可以在前面的基础上继续配置,分别是:
[*]本地模式
[*]伪分布
[*]分布式
###############################################
1.准备
安装jdk1.7参考
linux(ubuntu)安装Java jdk环境变量设置及小程序测试
测试:
Java -version
安装ssh
sudo apt-get install ssh
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ export HADOOP\_PREFIX=/usr/local/hadoop
最后达到无密码登录
ssh localhost
安装rsync
sudo apt-get install rsync
修改网卡:
注释掉127.0.1.1 ubuntu
添加新的映射
10.0.0.81 ubuntu
http://www.aboutyun.com/data/attachment/forum/201504/28/134037xtljbbl8ztso3p4j.png
这里必须修改,否则后面会遇到连接拒绝等问题
2.安装
进入配置文件目录
我这里是
~/hadoop-2.7.0/etc/hadoop
修改配置文件:
etc/hadoop/hadoop-env.sh
添加JAVA_HOME、HADOOP_COMMON_HOME
export JAVA_HOME=/usr/jdk
export HADOOP_COMMON_HOME=~/hadoop-2.7.0
配置环境变量
sudo nano /etc/environment
增加hadoop配置
将下面添加到变量PATH中
/home/aboutyun/hadoop-2.7.0/bin:/home/aboutyun/hadoop-2.7.0/sbin:
########################################################
3.本地模式验证[可忽略]
所谓的本地模式:在运行程序的时候,比如wordcount是在本地磁盘运行的
上面已经配置完毕,我们对其测试,分别执行面命令:
注意: bin/hadoop的执行条件是在hadoop_home中,我这里是
$ mkdir input
$ cp etc/hadoop/*.xml input
$bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep input output 'dfs+'
$ cat output/*
##################################################################
上面本地模式,我们知道就可以,我们下面继续配置伪分布模式
4.伪分布模式
我这里的全路径:/home/aboutyun/hadoop-2.7.0/etc/hadoop
修改文件etc/hadoop/core-site.xml
添加如下内容:
含义:接收Client连接的RPC端口,用于获取文件系统metadata信息。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
修改etc/hadoop/hdfs-site.xml:
添加如下内容:
含义:备份只有一份
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
###################################
补充重要:
由于系统重启后,找不到namenode进程,这是因为系统在重启后被删除,所以加入下面配置
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/aboutyun123/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/aboutyun123/dfs/data</value>
</property>
同时,注意权限
###################################
5.伪分布模式
1.格式化namenode
hdfs namenode -format有的地方使用
bin/hdfs namenode -format如果配置的环境变量直接使用hdfs namenode -format即可
2.启动集群
start-dfs.sh
这时候单节点伪分布就已经安装成功了
#####################################################
验证[可忽略]
输入下面
http://localhost:50070/如果是在虚拟机中安装,但是在宿主主机中访问,需要输入虚拟机ip地址
这里虚拟机ip地址是10.0.0.81
所以,我这里是
http://10.0.0.81:50070/
配置到这里也是可以的,我们同样可以运行wordcount,也就是我们的mapreduce不运行在yarn上。如果想让程序运行在yarn上,继续下面配置
#####################################################
6.配置Yarn
1.修改配置文件
修改配置文件mapred-site.xml
编辑文件etc/hadoop/mapred-site.xml,添加下面内容由于etc/hadoop中没有mapred-site.xml,所以对mapred-queues.xml.template复制一份
cp mapred-site.xml.template mapred-site.xml
然后编辑文件mapred-site.xml
添加
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
最后形式:
修改配置文件yarn-site.xml
添加如下内容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
2.启动yarn
start-yarn.sh
(由于我这里已经配置了环境变来那个,所以在哪个地方都可以运行start-yarn.sh)
如果你没有配置环境变量,则需要进入hadoop_home,执行下面命令
sbin/start-yarn.sh
3.验证
启动yarn之后,输入
http://localhost:8088/即可看到下面界面
下一篇hadoop2.7 运行wordcount
遇到问题
问题1:
Error: Could not find or load main class
org.apache.hadoop.hdfs.server.namenode.NameNode
解决办法:
在~/hadoop-2.7.0/etc/hadoop/hadoop-env.sh中添加
export HADOOP_COMMON_HOME=~/hadoop-2.7.0重启生效
问题2:
格式化Java_home not found
bin/hdfs namenode -format在/etc/environment 中添加
export JAVA_HOME=/usr/jdk
生效
source /etc/environment 重启[如还不行,重启]
sudo init 6
不错 谢谢楼主分享
谢谢分享。。。 谢谢分享。。。伪分布已搭建完成
谢谢楼主分享。 请教一下版主,我在ubuntu下面已经成功搭建好了HADOOP系统,现在我是想将几台windows的机器加入到HDFS的list上来,也就是说widnows平台的系统仅做DFHS的一部分,用于存储数据。请问这个能实现么?
我在windows的系统上安装了cgywin64并成功设置了ssh的免密码登陆。但可惜的是无法正常启动datanode, 谢谢!
yexingqi2005 发表于 2015-6-6 12:03
请教一下版主,我在ubuntu下面已经成功搭建好了HADOOP系统,现在我是想将几台windows的机器加入到HDFS的lis ...
不建议cywindow
pig2 发表于 2015-6-6 12:04
不建议cywindow
谢谢,那请问我能通过什么方式来实现在windows下面的DHFS的启动呢?
我也曾经单独在一台win7的机器上运行hadoop 2.7,运行运行cmd的命令启动成功,但是我找不到任何资料可以将二台win7联接起来的方法。似乎win7下面只能做单机? 我猜测不应该这样的啊?
还请版主指点!感谢不尽!
楼主我想问下,现在Hadoop2.7还需要自己编译吗,还是down下来可以直接用了? 楼主我想请问,我成功运行了本地模式验证,但是伪分布式运行命令start-dfs.sh时,出现command not found的错误。 并且再次尝试本地模式验证时,出现如下错误:
Java HotSpot(TM) Client VM warning: You have loaded library /usr/local/hadoop/hadoop-2.7.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
15/08/11 21:28:16 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/08/11 21:28:17 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
15/08/11 21:28:17 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
java.net.ConnectException: Call From lab401-virtual-machine/10.0.0.81 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:http://wiki.apache.org/hadoop/ConnectionRefused…………
请问该如何解决?辛苦楼主了