共计 7935 个字符,预计需要花费 20 分钟才能阅读完成。
Hadoop 虚拟机集群配置
一.在 VM 中安装 CentOS6.0 及以上版本(以 Master.Hadoop 为例)
a) 安装时设置所有的用户名为 hadoop
b) 修改主机名为 Master.Hadoop,Slave1.Hadoop,Slave2.Hadoop……
i. 用 vim 打开 /etc/sysconf/network,修改 HOSTNAME 后的参数,为主机名
c) 设置静态 IP(防止由于外界网络环境的变化影响整个集群)
i. vim /etc/sysconfig/network-scripts/ifcgf-eth0(修改 eth0 网卡)
IPDAAR:192.168.1.2
GATEWAY:192.168.1.1
DNS:
ii. Service network restart 重启网卡
iii. Ifconfig 命令,验证 ip 是否修改成功
d) 修改开机服务项,长期关闭防火墙 iptables 服务
i. vim /etc/sysconfig/iptables
ii. 在文件中加入:
-A INPUT -m state –state NEW -mtcp -p tcp –dport 21 -j ACCEPT
-A INPUT -m state –state NEW -mtcp -p tcp –dport 20 -j ACCEPT
e) 关闭 seLinux 服务(这个貌似影响不大)
i. getsebool -a | grep ftp 查询 selinux 设置状态
ii. 执行:setsebool -P ftp_home_dir 1
setsebool -P allow_ftpd_full_access 1
(执行的时间会比较长)
Vim /etc/selinux/config,设置“SELINUX=disabled”
f) 设置各个结点之间的 ssh 无密码连接
i. 在 /etc/hosts 文件中加入主机名及其对应的 ip,即可 ping 通主机名
ii. 查看本机中是否有 ssh、rsync 服务:
rpm –qa | grep openssh
rpm –qa | grep rsync
iii. 在 Master 结点执行:ssh-keygen –t rsa –P‘’命令
iv. 在 /home/hadoop/.ssh 文件夹中会看到两个文件即为刚生成的密钥
v. 执行:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
vi. 修改权限:chmod 600 ~/.ssh/authorized_keys
vii. 重启 ssh 服务:service sshd restart
viii. 测试:ssh localhost
ix. 将公钥复制到其他结点:scp ~/.ssh/id_rsa.pub 远程用户名 @远程服务器 IP:~/
x. 在 Slave 上创建文件夹 mkdir /home/hadoop/.ssh,并改为 700 权限
xi. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
xii. 删掉刚才复制过来的文件即可。
xiii. 同理,在从 Slave 结点向 Master 结点搭建 ssh 无密码连接。
二.安装 JDK
a) 在 Oracle 官网上下载 jdk1.6.0_31(尽量在官网下载,否则之后可能会出现非常坑爹的情况)
b) 复制到 linux 虚拟机中(也可以配置 vsftpd,利用服务器上传)
i. 进入根权限,mkdir /usr/java
ii. cp /home/hadoop/ jdk-6u31-linux-i586.bin /usr/java
iii. 进入“/usr/java”目录下,修改执行权限 chmod +x jdk-6u31-linux-i586.bin
iv. 执行./jdk-6u31-linux-i586.bin
c) 配置环境变量
i. 用 vim 修改 /etc/profile 文件
在文件的尾部添加
# set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_31/
export JRE_HOME=/usr/java/jdk1.6.0_31/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
ii. 执行 source /etc/profile,使之生效
iii. 执行 java -version 命令,若看到刚安装的 java 版本,测成功
iv. 若出现如下错误(官方下载的 JDK 一般无此问题):
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
v. 打开 jdk 下的 lib 文件夹,执行 unpack200 tools.pack tools.jar
进入 /jdk/jre/lib 执行 unpack200 rt.pack rt.jar,以及 jsse.pack
再次 java -version 验证
三.安装 hadoop
a) 在官网上下载 hadoop(hadoop1.0.0 和 hadoop1.2.0 我都装过)
b) 安装包复制到虚拟机中
c) 解压至并改名至:/usr/hadoop
d) 修改 hadoop 文件夹的用户分组 chown -R hadoop:hadoop hadoop
e) 在 hadoop 下创建 tmp 文件夹,一定要把权限修改为 777 满权限
f) 修改环境变量 vim /etc/profile
在结尾加入:
#set hadoop environment
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2013-11/93289p2.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(所有配置文件在 /usr/hadoop/conf 下)
a) 修改 hadoop-env.sh
加入:# set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_31
b) 修改 core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
(备注:请先在 /usr/hadoop 目录下建立 tmp 文件夹)
<description>A base for other temporary directories.</description>
</property>
<!– file system properties –>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.2:9000</value>
</property>
c) 修改 hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
(备注:replication 是数据副本数量,默认为 3,salve 少于 3 台就会报错)
</property>
<configuration>
d) 修改 mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.1.2:9001</value>
</property>
</configuration>
e) 修改 masters 和 slaves 文件,将 master 和所有 slave 的 ip 地址分别写入文件。
f) 把 /usr/hadoop 整个文件夹复制到其他 slave 结点上,修改环境变量和权限即可
g) 验证:hadoop namenode -format
start-all.sh
Jps 若发现有 namenode, jobtraker, secondnamenode;
slave 上有 datanode, tasktraker,
则成功
h) 常见异常:
i. namespaceID 不同。将 slave 的 /tmp/dfs/data 删掉,在 master 格式化 namenode
ii. 一定关掉所有结点的防火墙再启动 hadoop
i)
五.配置 eclipse,使用 eclipse 编译运行 hadoop 程序
六.运行程序时出现的异常
a) 本地库的异常:
i. 解决办法:在 core-site.xml 中加入
<property>
<name>hadoop.native.lib</name>
<value>true</value>
<description>Should native hadoop libraries, if present, be used.</description>
</property>
使 hadoop 连接本地库
b) Jvm 内存不够
i. 在 mapred-site.xml 中添加:
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx1024m</value>
</property>
ii. 在 hadoop-env.sh 中修改:
# The maximum amount of heap to use, in MB. Default is 1000.
export HADOOP_HEAPSIZE=2000
c) 在 mapred-site.xml 中加入(异常是什么忘记了)
<property>
<name>mapred.child.tmp</name>
<value>/usr/hadoop/tmp</value>
</property>
d) Permission Deny 的异常
i. Eclipse 中设置 Map/Reduce 时把用户名设为 hadoop(若在 win7 下,把管理员改为 hadoop)
ii. 在 hdfs-site.xml 中加入:
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
e) 注意事项:
i. 在运行程序前建议关闭 namenode 的安全模式
hadoop namenode -safemode leave
ii. 有时也需要关闭 hdfs 的安全模式
hadoop dfsadmin -safemode leave
f) 使用 eclipse 时
i. 在主类中设置 run configuration 中的 Argument 中设置输入输出参数,常为:
1. hdfs://192.168.1.2:9000/user/hadoop/input
2. hdfs://192.168.1.2:9000/user/hadoop/output
注:之间由空格相连,保证输出路径不存在
ii. 若依然显示异常:
File file : hdfs://192.168.1.2:9000/user/hadoop/input/file2.txt 不存在(input 中有 file1.txt 和 file2.txt. 文件)
1. 异常的表现是 map 0% reduce 0%
2. 在 192.168.1.2:50030 中,map 完成 100%,reduce 完成 100%。但 map 未传给 reduce。
3. 直接在代码中写死输入路径,不读参数。并不是环境的错误!!
iii. 当不能连接时,可能是网络问题,ifconfig 查看当前状况,并重启机器
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
Hadoop 虚拟机集群配置
一.在 VM 中安装 CentOS6.0 及以上版本(以 Master.Hadoop 为例)
a) 安装时设置所有的用户名为 hadoop
b) 修改主机名为 Master.Hadoop,Slave1.Hadoop,Slave2.Hadoop……
i. 用 vim 打开 /etc/sysconf/network,修改 HOSTNAME 后的参数,为主机名
c) 设置静态 IP(防止由于外界网络环境的变化影响整个集群)
i. vim /etc/sysconfig/network-scripts/ifcgf-eth0(修改 eth0 网卡)
IPDAAR:192.168.1.2
GATEWAY:192.168.1.1
DNS:
ii. Service network restart 重启网卡
iii. Ifconfig 命令,验证 ip 是否修改成功
d) 修改开机服务项,长期关闭防火墙 iptables 服务
i. vim /etc/sysconfig/iptables
ii. 在文件中加入:
-A INPUT -m state –state NEW -mtcp -p tcp –dport 21 -j ACCEPT
-A INPUT -m state –state NEW -mtcp -p tcp –dport 20 -j ACCEPT
e) 关闭 seLinux 服务(这个貌似影响不大)
i. getsebool -a | grep ftp 查询 selinux 设置状态
ii. 执行:setsebool -P ftp_home_dir 1
setsebool -P allow_ftpd_full_access 1
(执行的时间会比较长)
Vim /etc/selinux/config,设置“SELINUX=disabled”
f) 设置各个结点之间的 ssh 无密码连接
i. 在 /etc/hosts 文件中加入主机名及其对应的 ip,即可 ping 通主机名
ii. 查看本机中是否有 ssh、rsync 服务:
rpm –qa | grep openssh
rpm –qa | grep rsync
iii. 在 Master 结点执行:ssh-keygen –t rsa –P‘’命令
iv. 在 /home/hadoop/.ssh 文件夹中会看到两个文件即为刚生成的密钥
v. 执行:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
vi. 修改权限:chmod 600 ~/.ssh/authorized_keys
vii. 重启 ssh 服务:service sshd restart
viii. 测试:ssh localhost
ix. 将公钥复制到其他结点:scp ~/.ssh/id_rsa.pub 远程用户名 @远程服务器 IP:~/
x. 在 Slave 上创建文件夹 mkdir /home/hadoop/.ssh,并改为 700 权限
xi. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
xii. 删掉刚才复制过来的文件即可。
xiii. 同理,在从 Slave 结点向 Master 结点搭建 ssh 无密码连接。
二.安装 JDK
a) 在 Oracle 官网上下载 jdk1.6.0_31(尽量在官网下载,否则之后可能会出现非常坑爹的情况)
b) 复制到 linux 虚拟机中(也可以配置 vsftpd,利用服务器上传)
i. 进入根权限,mkdir /usr/java
ii. cp /home/hadoop/ jdk-6u31-linux-i586.bin /usr/java
iii. 进入“/usr/java”目录下,修改执行权限 chmod +x jdk-6u31-linux-i586.bin
iv. 执行./jdk-6u31-linux-i586.bin
c) 配置环境变量
i. 用 vim 修改 /etc/profile 文件
在文件的尾部添加
# set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_31/
export JRE_HOME=/usr/java/jdk1.6.0_31/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
ii. 执行 source /etc/profile,使之生效
iii. 执行 java -version 命令,若看到刚安装的 java 版本,测成功
iv. 若出现如下错误(官方下载的 JDK 一般无此问题):
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
v. 打开 jdk 下的 lib 文件夹,执行 unpack200 tools.pack tools.jar
进入 /jdk/jre/lib 执行 unpack200 rt.pack rt.jar,以及 jsse.pack
再次 java -version 验证
三.安装 hadoop
a) 在官网上下载 hadoop(hadoop1.0.0 和 hadoop1.2.0 我都装过)
b) 安装包复制到虚拟机中
c) 解压至并改名至:/usr/hadoop
d) 修改 hadoop 文件夹的用户分组 chown -R hadoop:hadoop hadoop
e) 在 hadoop 下创建 tmp 文件夹,一定要把权限修改为 777 满权限
f) 修改环境变量 vim /etc/profile
在结尾加入:
#set hadoop environment
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2013-11/93289p2.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