共计 19740 个字符,预计需要花费 50 分钟才能阅读完成。
历时一周多,终于搭建好最新版本 Hadoop2.2 集群,期间遇到各种问题,作为菜鸟真心被各种折磨,不过当 wordcount 给出结果的那一刻,兴奋的不得了~~(文当中若有错误之处或疑问欢迎指正,互相学习)
另外:欢迎配置过程中遇到问题的朋友留言,相互讨论,并且能够把解决方法共享给大家。下面评论中有几个朋友遇到的问题和解决方法,欢迎参考!
第一部分 Hadoop 2.2 下载
Hadoop 我们从 Apache 官方网站直接下载最新版本 Hadoop2.2。官方目前是提供了 linux32 位系统可执行文件,所以如果需要在 64 位系统上部署则需要单独下载 src 源码自行编译(10 楼评论中提供了一个解决方法链接)。
下载地址:http://apache.claz.org/hadoop/common/hadoop-2.2.0/
如下图所示,下载红色标记部分即可。如果要自行编译则下载 src.tar.gz.
第二部分 集群环境搭建
1、这里我们搭建一个由三台机器组成的集群:
192.168.0.1 hduser/passwd cloud001 nn/snn/rm CentOS6 64bit
192.168.0.2 hduser/passwd cloud002 dn/nm Ubuntu13.04 32bit
192.168.0.3 hduser/passwd cloud003 dn/nm Ubuntu13.0432bit
1.1 上面各列分别为 IP、user/passwd、hostname、在 cluster 中充当的角色(namenode, secondary namenode, datanode , resourcemanager, nodemanager)
1.2 Hostname 可以在 /etc/hostname 中修改(ubuntu 是在这个路径下,RedHat 稍有不同)
1.3 这里我们为每台机器新建了一个账户 hduser. 这里需要给每个账户分配 sudo 的权限。(切换到 root 账户,修改 /etc/sudoers 文件,增加:hduser ALL=(ALL) ALL)
2、修改 /etc/hosts 文件,增加三台机器的 ip 和 hostname 的映射关系
192.168.0.1 cloud001
192.168.0.2 cloud002
192.168.0.3 cloud003
3、打通 cloud001 到 cloud002、cloud003 的 SSH 无密码登陆
3.1 安装 ssh
一般系统是默认安装了 ssh 命令的。如果没有,或者版本比较老,则可以重新安装:
sodu apt-get install ssh
3.2 设置 local 无密码登陆
安装完成后会在~ 目录(当前用户主目录,即这里的 /home/hduser)下产生一个隐藏文件夹.ssh(ls -a 可以查看隐藏文件)。如果没有这个文件,自己新建即可(mkdir .ssh)。
具体步骤如下:
1、进入.ssh 文件夹
2、ssh-keygen -t rsa 之后一路回 车(产生秘钥)
3、把 id_rsa.pub 追加到授权的 key 里面去(cat id_rsa.pub >> authorized_keys)
4、重启 SSH 服 务命令使其生效 :service sshd restart(这里 RedHat 下为 sshdUbuntu 下为 ssh)
此时已经可以进行 ssh localhost 的无密码登陆
【注意】:以上操作在每台机器上面都要进行。
3.3 设置远程无密码登陆
这里只有 cloud001 是 master,如果有多个 namenode,或者 rm 的话则需要打通所有 master 都其他剩余节点的免密码登陆。(将 001 的 authorized_keys 追加到 002 和 003 的 authorized_keys)
进入 001 的.ssh 目录
scp authorized_keys hduser@cloud002:~/.ssh/ authorized_keys_from_cloud001
进入 002 的.ssh 目录
cat authorized_keys_from_cloud001>> authorized_keys
至此,可以在 001 上面 sshhduser@cloud002 进行无密码登陆了。003 的操作相同。
4、安装 jdk(建议每台机器的 Java_HOME 路径信息相同)
注意:这里选择下载 jdk 并自行安装,而不是通过源直接安装(apt-get install)
4.1、下载 jkd(http://www.Oracle.com/technetwork/java/javase/downloads/index.html)
4.1.1 对于 32 位的系统可以下载以下两个 Linux x86 版本(uname -a 查看系统版本)
4.1.2 64 位系统下载 Linux x64 版本(即 x64.rpm 和 x64.tar.gz)
4.2、安装 jdk(这里以.tar.gz 版本,32 位系统为例)
安装方法参考 http://docs.oracle.com/javase/7/docs/webnotes/install/linux/linux-jdk.html
4.2.1 选择要安装 java 的位置,如 /usr/ 目录下,新建文件夹 java(mkdirjava)
4.2.2 将文件 jdk-7u40-linux-i586.tar.gz 移动到 /usr/java
4.2.3 解压:tar -zxvf jdk-7u40-linux-i586.tar.gz
4.2.4 删除 jdk-7u40-linux-i586.tar.gz(为了节省空间)
至此,jkd 安装完毕,下面配置环境变量
4.3、打开 /etc/profile(vim /etc/profile)
在最后面添加如下内容:
JAVA_HOME=/usr/java/jdk1.7.0_40(这里的版本号 1.7.40 要根据具体下载情况修改)
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOMECLASSPATH PATH
4.4、source /etc/profile
4.5、验证是否安装成功:java–version
【注意】每台机器执行相同操作,最后将 java 安装在相同路径下(不是必须的,但这样会使后面的配置方便很多)
5、关闭每台机器的防火墙
RedHat:
/etc/init.d/iptables stop 关闭防火墙。
chkconfig iptables off 关闭开机启动。
Ubuntu:
ufw disable (重启生效)
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-11/93077p2.htm
相关阅读:
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
第三部分 Hadoop 2.2 安装过程
由于 hadoop 集群中每个机器上面的配置基本相同,所以我们先在 namenode 上面进行配置部署,然后再 复制到其他节点。所以这里的安装过程相当于在每台机器上面都要执行。但需要注意的是集群中 64 位系统和 32 位系统的问题。
1、解压文件
将第一部分中下载的 hadoop-2.2.tar.gz 解压到 /home/hduser 路径下(或者将在 64 位机器上编译的结果存放在此路径下)。然后为了节省空间,可删除此压缩文件,或将其存放于其他地方进行备份。
注意:每台机器的安装路径要相同!!
2、hadoop 配置过程
配置之前,需要在 cloud001 本地文件系统创建以下文件夹:
~/dfs/name
~/dfs/data
~/temp
这里要涉及到的配置文件有 7 个:
~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
~/hadoop-2.2.0/etc/hadoop/yarn-env.sh
~/hadoop-2.2.0/etc/hadoop/slaves
~/hadoop-2.2.0/etc/hadoop/core-site.xml
~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
以上 个别 文件默认不存在的,可以复制相应的 template 文件获得。
配置文件 1:hadoop-env.sh
修改 Java_HOME 值(export JAVA_HOME=/usr/java/jdk1.7.0_40)
配置文件 2:yarn-env.sh
修改 JAVA_HOME 值(exportJAVA_HOME=/usr/java/jdk1.7.0_40)
配置文件 3:slaves(这个文件里面保存所有 slave 节点)
写入以下内容:
cloud002
cloud003
配置文件 4:core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://cloud001:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hduser/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>
配置文件 5:hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>cloud001:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置文件 6:mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>cloud001:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>cloud001:19888</value>
</property>
</configuration>
配置文件 7:yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>cloud001:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value> cloud001:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value> cloud001:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value> cloud001:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value> cloud001:8088</value>
</property>
</configuration>
3、复制到其他节点
这里可以写一个 shell 脚本进行操作(有大量节点时比较方便)
cp2slave.sh
#!/bin/bash
scp–r /home/hduser/hadoop-2.2.0 hduser@cloud002:~/
scp–r /home/hduser/hadoop-2.2.0 hduser@cloud003:~/
注意:由于我们集群里面 001 是 64bit 而 002 和 003 是 32bit 的,所以不能直接复制,而采用单独安装 hadoop,复制替换相关配置文件:
Cp2slave2.sh
#!/bin/bash
scp /home/hduser/hadoop-2.2.0/etc/hadoop/slaveshduser@cloud002:~/hadoop-2.2.0/etc/hadoop/slaves
scp /home/hduser/hadoop-2.2.0/etc/hadoop/slaveshduser@cloud003:~/hadoop-2.2.0/etc/hadoop/slaves
scp /home/hduser/hadoop-2.2.0/etc/hadoop/core-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/core-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/core-site.xml hduser@cloud003:~/hadoop-2.2.0/etc/hadoop/core-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/hdfs-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/hdfs-site.xmlhduser@cloud003:~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/mapred-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/mapred-site.xmlhduser@cloud003:~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/yarn-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
scp /home/hduser/hadoop-2.2.0/etc/hadoop/yarn-site.xmlhduser@cloud003:~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
4、启动验证
4.1 启动 hadoop
进入安装目录:cd ~/hadoop-2.2.0/
格式化 namenode:./bin/hdfs namenode –format
启动 hdfs: ./sbin/start-dfs.sh
此时在 001 上面运行的进程有:namenode secondarynamenode
002 和 003 上面运行的进程有:datanode
启动 yarn: ./sbin/start-yarn.sh
此时在 001 上面运行的进程有:namenode secondarynamenoderesourcemanager
002 和 003 上面运行的进程有:datanode nodemanaget
查看集群状态:./bin/hdfs dfsadmin –report
查看文件块组成:./bin/hdfsfsck / -files -blocks
查看 HDFS: http://16.187.94.161:50070
查看 RM: http:// 16.187.94.161:8088
4.2 运行示例程序:
先在 hdfs 上创建一个文件夹
./bin/hdfs dfs –mkdir /input
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jarrandomwriter input
PS:dataNode 无法启动是配置过程中最常见的问题,主要原因是多次 format namenode 造成 namenode 和 datanode 的 clusterID 不一致。建议查看 datanode 上面的 log 信息。解决办法: 修改每一个 datanode 上面的 CID(位于 dfs/data/current/VERSION 文件夹中)使两者一致。还有一种解决方法见下面 6 楼评论!http://www.linuxidc.com/Linux/2013-11/93077p3.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
历时一周多,终于搭建好最新版本 Hadoop2.2 集群,期间遇到各种问题,作为菜鸟真心被各种折磨,不过当 wordcount 给出结果的那一刻,兴奋的不得了~~(文当中若有错误之处或疑问欢迎指正,互相学习)
另外:欢迎配置过程中遇到问题的朋友留言,相互讨论,并且能够把解决方法共享给大家。下面评论中有几个朋友遇到的问题和解决方法,欢迎参考!
第一部分 Hadoop 2.2 下载
Hadoop 我们从 Apache 官方网站直接下载最新版本 Hadoop2.2。官方目前是提供了 linux32 位系统可执行文件,所以如果需要在 64 位系统上部署则需要单独下载 src 源码自行编译(10 楼评论中提供了一个解决方法链接)。
下载地址:http://apache.claz.org/hadoop/common/hadoop-2.2.0/
如下图所示,下载红色标记部分即可。如果要自行编译则下载 src.tar.gz.
第二部分 集群环境搭建
1、这里我们搭建一个由三台机器组成的集群:
192.168.0.1 hduser/passwd cloud001 nn/snn/rm CentOS6 64bit
192.168.0.2 hduser/passwd cloud002 dn/nm Ubuntu13.04 32bit
192.168.0.3 hduser/passwd cloud003 dn/nm Ubuntu13.0432bit
1.1 上面各列分别为 IP、user/passwd、hostname、在 cluster 中充当的角色(namenode, secondary namenode, datanode , resourcemanager, nodemanager)
1.2 Hostname 可以在 /etc/hostname 中修改(ubuntu 是在这个路径下,RedHat 稍有不同)
1.3 这里我们为每台机器新建了一个账户 hduser. 这里需要给每个账户分配 sudo 的权限。(切换到 root 账户,修改 /etc/sudoers 文件,增加:hduser ALL=(ALL) ALL)
2、修改 /etc/hosts 文件,增加三台机器的 ip 和 hostname 的映射关系
192.168.0.1 cloud001
192.168.0.2 cloud002
192.168.0.3 cloud003
3、打通 cloud001 到 cloud002、cloud003 的 SSH 无密码登陆
3.1 安装 ssh
一般系统是默认安装了 ssh 命令的。如果没有,或者版本比较老,则可以重新安装:
sodu apt-get install ssh
3.2 设置 local 无密码登陆
安装完成后会在~ 目录(当前用户主目录,即这里的 /home/hduser)下产生一个隐藏文件夹.ssh(ls -a 可以查看隐藏文件)。如果没有这个文件,自己新建即可(mkdir .ssh)。
具体步骤如下:
1、进入.ssh 文件夹
2、ssh-keygen -t rsa 之后一路回 车(产生秘钥)
3、把 id_rsa.pub 追加到授权的 key 里面去(cat id_rsa.pub >> authorized_keys)
4、重启 SSH 服 务命令使其生效 :service sshd restart(这里 RedHat 下为 sshdUbuntu 下为 ssh)
此时已经可以进行 ssh localhost 的无密码登陆
【注意】:以上操作在每台机器上面都要进行。
3.3 设置远程无密码登陆
这里只有 cloud001 是 master,如果有多个 namenode,或者 rm 的话则需要打通所有 master 都其他剩余节点的免密码登陆。(将 001 的 authorized_keys 追加到 002 和 003 的 authorized_keys)
进入 001 的.ssh 目录
scp authorized_keys hduser@cloud002:~/.ssh/ authorized_keys_from_cloud001
进入 002 的.ssh 目录
cat authorized_keys_from_cloud001>> authorized_keys
至此,可以在 001 上面 sshhduser@cloud002 进行无密码登陆了。003 的操作相同。
4、安装 jdk(建议每台机器的 Java_HOME 路径信息相同)
注意:这里选择下载 jdk 并自行安装,而不是通过源直接安装(apt-get install)
4.1、下载 jkd(http://www.Oracle.com/technetwork/java/javase/downloads/index.html)
4.1.1 对于 32 位的系统可以下载以下两个 Linux x86 版本(uname -a 查看系统版本)
4.1.2 64 位系统下载 Linux x64 版本(即 x64.rpm 和 x64.tar.gz)
4.2、安装 jdk(这里以.tar.gz 版本,32 位系统为例)
安装方法参考 http://docs.oracle.com/javase/7/docs/webnotes/install/linux/linux-jdk.html
4.2.1 选择要安装 java 的位置,如 /usr/ 目录下,新建文件夹 java(mkdirjava)
4.2.2 将文件 jdk-7u40-linux-i586.tar.gz 移动到 /usr/java
4.2.3 解压:tar -zxvf jdk-7u40-linux-i586.tar.gz
4.2.4 删除 jdk-7u40-linux-i586.tar.gz(为了节省空间)
至此,jkd 安装完毕,下面配置环境变量
4.3、打开 /etc/profile(vim /etc/profile)
在最后面添加如下内容:
JAVA_HOME=/usr/java/jdk1.7.0_40(这里的版本号 1.7.40 要根据具体下载情况修改)
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOMECLASSPATH PATH
4.4、source /etc/profile
4.5、验证是否安装成功:java–version
【注意】每台机器执行相同操作,最后将 java 安装在相同路径下(不是必须的,但这样会使后面的配置方便很多)
5、关闭每台机器的防火墙
RedHat:
/etc/init.d/iptables stop 关闭防火墙。
chkconfig iptables off 关闭开机启动。
Ubuntu:
ufw disable (重启生效)
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-11/93077p2.htm
相关阅读:
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm
- 22 楼 Rooter 5 小时前发表 [回复]
- 博主想问下,为什么 http://localhost50070/dfshealth.jsp 页面上的 Browse the filesystem 不能打开呢? 我用单节点和完全分布式的部署都不能打开
- 21 楼 zxu618 4 天前 09:41 发表 [回复]
- 楼主也是 64 位,你当时如何重新编译的?
- Re: 我是菜鸟要早起 3 天前 18:13 发表 [回复]
- 回复 zxu618:编译方法:http://www.linuxidc.com/Linux/2013-11/93080.htm
- 20 楼 zxu618 2013-11-15 16:40 发表 [回复]
- 楼主威武,最近导师让搭个 Hadoop,正愁没有教程呢
- 19 楼 a632154894 2013-11-15 13:40 发表 [回复]
- 楼主你好,我在启动 hdfs: ./sbin/start-dfs.sh 的时候出错了。
我把我的配置给你看看
- 18 楼 a632154894 2013-11-15 13:34 发表 [回复]
- 楼主,你好,我不清楚你那些指令,哪些是在 root 用户下执行的,哪些是在 hduser 下执行的!
- Re: 我是菜鸟要早起 3 天前 18:12 发表 [回复]
- 回复 a632154894:可以所有都在 hduser 用户下,前提是该用户已经加入到 sudoers 文件
- 17 楼 淵鴻 2013-11-08 17:44 发表 [回复]
- 楼主,为什么我的 resourcemanager 开起来之后,自动就关了呢,8088 端口没有在监听
- Re: 我是菜鸟要早起 2013-11-10 19:04 发表 [回复]
- 回复 Gameword1:一般这种问题都是集群中结点直接通讯问题导致的。建议你查看 namenode 上面关于 resource manager 的 log。看看具体错误在哪里
- 16 楼 neihaoma 2013-11-08 17:22 发表 [回复]
- 楼主啊,,搭建成功了,页面也出来了,但是使用过程中还有好多问题,,求解
- 15 楼 neihaoma 2013-11-06 11:57 发表 [回复]
- 编译安装顺利完成,十分感谢楼主分享,赞一个
- Re: neihaoma 2013-11-08 15:54 发表 [回复]
- 回复 u012732153:楼主,有个问题要请教一下,加我
- Re: neihaoma 2013-11-08 15:11 发表 [回复]
- 回复 u012732153:其他 slave 节点 datanode 无法启动,还有一个原因是 hosts 文件写错了,估计大家不会犯那种错误,反正我是这个原因
- 14 楼 snrjmhn 2013-11-06 10:34 发表 [回复]
- 请问楼主有没有 cygwin 上安装 hadoop-2.2.0 的经验?
我是一新手,在 cygwin 上安装 hadoop-2.2.0 后,
用 bin/hdfs namenode -format 命令时总是提示下边的问题:
▒▒▒▒: ▒Ҳ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ org.apache.hadoop.hdfs.server.namenode.NameNode请指教
- Re: 我是菜鸟要早起 2013-11-10 19:07 发表 [回复]
抱歉我在 cygwin 下面没有安装过,不过应该这 linux 下面没有区别的吧。你的错误信息显示不完全,没看到具体原因
- 13 楼 zpc_silenthill 2013-11-05 11:47 发表 [回复]
- 新手一枚,按照博主的步骤安装成功了,非常感谢分享。
博主 core-site.xml 有个笔误 <name>fs.defaultFS</name>,估计是 <name>fs.default.name</name>。
另外,发现如果 <name>fs.default.name</name> 的值使用的是机器名的话。在 namenode 的 /etc/hosts 中,如果 127.0.0.1 要放在本机的 IP 后,否则执行:./bin/hdfs dfsadmin –report,不能看的配置的 2 个 datanode,只能看到本机的。原因不清楚。
- Re: 我是菜鸟要早起 2013-11-05 13:03 发表 [回复]
- 回复 zpc_silenthill:你遇到的问题 2,你试注释到 127.0.0.1 那一行。
只用 IP hostname
- Re: 我是菜鸟要早起 2013-11-05 12:59 发表 [回复]
- 回复 zpc_silenthill:首先恭喜你成功部署!
name>fs.defaultFS</name> 是可以的,我开始部署的时候也注意到这个问题了。老版本的 hadoop 上面,参数都是:<name>fs.default.name</name>。应该是 2.0 以后改成 FS 这种的(http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml)。如果你部署成功的话,说明参数名是向前兼容的。
- Re: zpc_silenthill 2013-11-05 13:50 发表 [回复]
- 回复 licongcong_0224:感谢博主细致的回复 赞一个
- 12 楼 蜗蜗牛快跑 2013-11-05 11:20 发表 [回复]
- 博主有装 hbase 么?我在装 hbase 时遇到版本冲突了,求指导呀!
- Re: 我是菜鸟要早起 2013-11-05 12:48 发表 [回复]
- 回复 superbinbin1:实在抱歉了,最近因为没有用到 hbase,直接在 hive 上面搞一些简单的事情。不过后面是打算把 hadoop 相关的东西都尝试一下。你可以先琢磨一下,个人觉得 hdfs 和 yarn 相关都部署好了,其他的就比较容易了。你提到的版本兼容问题,我猜是因为你的 hbase 比较老吧。因为 hive 和 hadoop 之间就有个版本的对应问题。要新对新,老对老!
- 11 楼 蜗蜗牛快跑 2013-11-05 11:19 发表 [回复]
后面查了下,发现我也是这个问题!坑爹的,都是复制张贴惹的祸呀!非常感激博主的无私帮助,hadoop 成功部署了,哈哈
- Re: 我是菜鸟要早起 2013-11-05 12:45 发表 [回复]
- 回复 superbinbin1:恭喜恭喜!!网页复制经常出现各种问题。群众的力量是伟大的,哈哈。。欢迎大家共享各种问题!
- 10 楼 jackhes02 2013-11-04 10:13 发表 [回复]
- 运行任何一条命令都有这条报错信息,请问,怎么处理,谢谢。
[zzhadoop@vm2 hadoop-2.2.0]$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter input
13/11/04 10:12:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-Java classes where applicable[zzhadoop@vm2 hadoop]$ hdfs dfsadmin -report
13/11/04 10:04:15 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
- Re: jackhes02 2013-11-04 13:36 发表 [回复]
- 回复 jackhes02:网上查了一下资料,说是 32 位 hadoop 部署在了 64 为 linux 上。
hadoop2.2.0 遇到 64 位操作系统平台报错,重新编译 hadoop:http://www.linuxidc.com/Linux/2013-11/93080.htm
- Re: 我是菜鸟要早起 2013-11-04 13:47 发表 [回复]
- 回复 jackhes02:是的,谢谢提供链接
- Re: 我是菜鸟要早起 2013-11-04 12:43 发表 [回复]
- 回复 jackhes02:你是在 64 位系统上跑的吧?
处理办法就是下载 src 在 64 位机器上面编译一下。因为直接下载的是适用于 32 机器的。blog 上面有讲到的
- 9 楼 外星茹敬雨拦不住 2013-11-03 21:10 发表 [回复]
- 您好,我是 hadoop 的新手。
我想问一下,既然 hadoop2.2 已经发布,还有没有必要先学习下 hadoop1.2. 他们两者之间差距大吗?
网上关于 2.2 的资料很少,大部分都是 1.2 的。
希望您能给个建议,谢谢啦~
- Re: 我是菜鸟要早起 2013-11-03 21:47 发表 [回复]
您好,由于 2.2 是 10 月份刚刚发布的,所以网上相关资料都非常少,甚至 2.0 版本以后都很难找到比较详细的中午资料,所以最权威的还是查看 Apache 的英文资料,我配置过程中也主要参考的那些。至于您提到的是否需要学习一下以往版本进行对比,这个取决您学习的目的,如果只是简单的想部署集群,并且跑一些程序,或者仅仅使用 hdfs 进行存储,那么我觉得就不是很有必要了。如果您要学习 mapreduce 编程,或者想研究 2.0 以后 hadoop 的各种改进,那么有必要了解一下以往版本。
- Re: 外星茹敬雨拦不住 2013-11-04 09:51 发表 [回复]
- 回复 licongcong_0224:非常感谢您的回复,我决定还是先学习下 hadoop1.2,作为新手,直接看英文有些困难。以后还望多多赐教,再次感谢~
- Re: 我是菜鸟要早起 2013-11-04 12:41 发表 [回复]
- 回复 rjy1989:赐教不敢当,欢迎互相学习交流
- 8 楼 jackhes02 2013-11-03 17:50 发表 [回复]
- – 启动 yarn 始终无法启动,请帮忙看看。我 QQ:17032053;希望能向你请教,谢谢。
[zzhadoop@vm2 hadoop]$ start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/zzhadoop/hadoop-2.2.0/logs/yarn-zzhadoop-resourcemanager-vm2.out
sst-db: starting nodemanager, logging to /home/zzhadoop/hadoop-2.2.0/logs/yarn-zzhadoop-nodemanager-sst-db.out
vm1: starting nodemanager, logging to /home/zzhadoop/hadoop-2.2.0/logs/yarn-zzhadoop-nodemanager-vm1.out
[zzhadoop@vm2 hadoop]$
[zzhadoop@vm2 hadoop]$ jps
2352 NameNode
2699 SecondaryNameNode
3111 Jps
[zzhadoop@vm2 hadoop]$ cat /home/zzhadoop/hadoop-2.2.0/logs/yarn-zzhadoop-resourcemanager-vm2.out
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1031728
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65536
- Re: 我是菜鸟要早起 2013-11-03 21:07 发表 [回复]
- 回复 jackhes02:你查看一下 yarn-zzhadoop-resourcemanager-vm2.log 这个里面的信息吧,看看RM没有启动的原因在哪里?
- Re: jackhes02 2013-11-04 09:57 发表 [回复]
- 回复 licongcong_0224:问题已解决,报错如下:
2013-11-04 09:42:43,405 INFO org.apache.hadoop.service.AbstractService: Service org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService failed in state INITED; cause: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: vm2:8031 (configuration property ‘yarn.resourcemanager.resource-tracker.address’)
java.lang.IllegalArgumentException: Does not contain a valid host:port authority: vm2:8031 (configuration property ‘yarn.resourcemanager.resource-tracker.address’)
— 原因是在填写配置文件 yarn-site.xml 时主机名前多了一个空格。
- Re: 我是菜鸟要早起 2013-11-04 12:41 发表 [回复]
- 回复 jackhes02:哈哈,,有有时候手误还真的会带来一些很纠结的问题。恭喜!!谢谢问题反馈!
- 7 楼 蜗蜗牛快跑 2013-11-03 11:33 发表 [回复]
- 您好,今天照您的教程做了一遍,我用的两台 Ubuntu。001 按照配置启动 hdfs 后,有这几个进程:
10029 DataNode
10491 Jps
9696 NameNode
10361 SecondaryNameNode
但是 002 的 datanode 没启动。。。那边完全没反应,您看问题可能出在哪?
hadoop 是如何让 002 的 datanode 启动的?这个原理我就没想明白。难道是通过 slaves 文件里面的配置么?
- Re: 我是菜鸟要早起 2013-11-03 14:45 发表 [回复]
1)001 上面有 datanode 进程?你是不是把 001 也写进到 slaves 中了
2)002 中的 datanode 进程是通过 slaves 中的配置检查到,从而启动的。
3)你检查一下你的 /etc/hosts 中配置是否正确
- Re: 蜗蜗牛快跑 2013-11-03 19:31 发表 [回复]
- 回复 licongcong_0224:您好,我是 slaves 添加了 namenode 的主机名才导致错误的。后面改了下,start-dfs.sh 可以成功运行,但是 start-yarn.sh 命令却无法启动相关进程,log 报错:Error starting ResourceManager
java.lang.IllegalArgumentException: Does not contain a valid host:port authority:。。。。。。
网上查倒是有相关先例,有说主机名不能包含大写字母(我的有包含)或者下划线,也有说配置文件路径不对。您有空帮我分析分析,感激不尽
- Re: 我是菜鸟要早起 2013-11-03 21:01 发表 [回复]
- 回复 superbinbin1:你查一下位于 namenode 这台机器上面的 log,关于 RM 无法启动的原因是什么?既然 namenode 进程都启动了,个人觉得应该不是 hostname 命名方式的问题了吧?
- 6 楼 buptwuguohua 2013-11-01 16:44 发表 [回复]
- 你好,我按照你的配置,最后发现 datanode 无法启动,找了很久没找到原因,我的 qq 是 331836971,希望能帮忙解决一下。
- Re: 我是菜鸟要早起 2013-11-01 20:05 发表 [回复]
- 回复 buptwuguohua:你可以查看一下 datanode 上面的 log 信息,datanode 无法启动的原因八成是你多次 format namenode 造成的。log 中有详细原因,解放方法也很���单
- Re: buptwuguohua 2013-11-01 23:42 发表 [回复]
- 回复 licongcong_0224:问题已经解决,主要是两个问题:
1. clusterID 不一致,namenode 的 cid 和 datanode 的 cid 不一致,导致的原因是对 namenode 进行 format 的之后,datanode 不会进行 format,所以 datanode 里面的 cid 还是和 format 之前 namenode 的 cid 一样,解决办法是删除 datanode 里面的 dfs.datanode.data.dir 目录和 tmp 目录,然后再启动 start-dfs.sh
2. 即使删除 iptables 之后,仍然报 Datanode denied communication with namenode: DatanodeRegistration 错误,参考文章 http://stackoverflow.com/questions/17082789/cdh4-3exception-from-the-logs-after-start-dfs-sh-datanode-and-namenode-star,可以知道需要把集群里面每个 houst 对应的 ip 写入 /etc/hosts 文件就能解决问题。
- Re: 我是菜鸟要早起 2013-11-02 14:15 发表 [回复]
- 回复 buptwuguohua:昨晚在问题二上面纠结了那么久,呵呵~~ 另外,提醒大家,关闭所有机器上面的防火墙!!
- 5 楼 dallar 2013-11-01 16:00 发表 [回复]
- 您好,我也是 hadoop 新手,测试过程中发现问题,希望能交流一下。QQ:332890886
- Re: 我是菜鸟要早起 2013-11-01 20:06 发表 [回复]
- 回复 dallar:请问是什么问题呢?
- 4 楼 唉唉唉 2013-10-31 11:32 发表 [回复]
- master 和所有的 slaves 的 hadoop 安装路径要一致,而且所有的配置文件 <name> 和 <value> 节点处不要有空格,否则会报错!
- Re: 我是菜鸟要早起 2013-10-31 12:35 发表 [回复]
- 回复 yangzhp1_1:谢谢反馈!
- 3 楼 水往低处流 2013-10-30 14:46 发表 [回复]
- 我的 qq:605425512,方便加一下吗?有点问题请教一下
- Re: 我是菜鸟要早起 2013-10-30 15:50 发表 [回复]
- 回复 worklxh:已加
- 2 楼 唉唉唉 2013-10-30 14:34 发表 [回复]
- 你好,我有些问题想请教你!
- Re: 我是菜鸟要早起 2013-10-30 15:50 发表 [回复]
- 回复 yangzhp1_1:已加
- 1 楼 唉唉唉 2013-10-30 11:16 发表 [回复]
- 问一下后续问题 你是怎么在 eclipse 中开发的??
- Re: 我是菜鸟要早起 2013-10-30 14:14 发表 [回复]
- 回复 yangzhp1_1:目前我个人还没有涉及到并行程序的具体开发工作,只是在 hive 下通过编写脚本对 hdfs 上面的数据进行简单处理。