从0到1:搭建Hadoop集群
简书不会写代码,具体文稿还望移步CSDN:从0到1:搭建Hadoop集群
软件:VMware,SecureCRT
环境:centos
首先是要在VMware中创建三个centos环境,分别作为master(主机),slave1(从机),slave2(从机),并分别设置ip(此处很关键,但是要注意是否本地ip已经是静态ip了),设置完试试:ping www.baidu.com
接下来要在secureCRT中创建三个session,分别对应master,slave1,slave2的ip,创建并连接后要试试每个session中的:ifconfig,查看是否对应ip地址
为Linux配置Java环境变量:
首先要保证Linux下已经存在jdk文件夹,且在 /jdk/bin/ 下的可以执行: ./java 命令
0. su #进入到root模式
1. vim ~/.bashrc #编辑根目录下的.bashrc文件(不知道有没有.)
2. 在文件的末尾加入:
export JAVA_HOME=/usr/local/src/jdk1.6.0_45 #jdk文件夹的位置
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib #注意前面有个点.,且中间是冒号不是分号
export PATH=$PATH:$JAVA_HOME/bin
3. ESC :wq #保存并退出
4. source ~/.bashrc #很重要,就是要更新一下环境变量的意思吧
5. 这时候可以在root(要先su哈)模式中的任意目录下执行java命令,都可以了
搭建Hadoop环境:
在master节点上:
1. tar xvzf hadoop-1.2.1-bin.tar.gz #解压
2. cd hadoop-1.2.1
3. mkdir tmp #新建一个保存临时文件的文件夹
4. cd conf #进入/usr/local/src/hadoop-1.2.1/conf文件夹进行配置文件的修改
5. vim masters
master #删除掉原来的内容,然后保存退出
6. vim slaves
slave1
slave2
7. vim core-site.xml
在<configuration>标签中插入:
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop-1.2.1/tmp</value>
</property>
<property>
<name> fs.default </name>
<value> hdfs://xx:9000 </value> # xx是你的ip地址,
</property>
8. vim mapred-site.xml
<property>
<name>dfs.replication</name>
<value>3</value> #数据的负载数,默认3
</property>
9. vim hadoop-env.sh
在最后面加入
export JAVA_HOME=/usr/local/src/jdk1.6.0-45
10. vim /etc/hosts
相当于配置当前网络环境下的DSS,避免总是输入ip地址,最后面加入
192.168.145.130 master
192.168.145.132 slave1
192.168.145.133 slave2
11. hostname master #生效这个修改(临时)
12. vim /etc/sysconfig/network #永久生效
把hostname改成master (主机master,从机slave)
13. cd /usr/local/src #j进入到文件夹下准备复制文件
14. scp -rp * xx:/usr/local/src/ #将当前文件夹中的所有文件远程复制到对应的ip
在slave1节点上
1. cd /usr/local/src/ #进入到Hadoop文件夹下,用cat先检查对应的配置文件是否确实修改完(正常来说,因为是复制过来的,不会有问题)
2. vim /etc/hosts #修改hosts
最后面加入
192.168.145.130 master
192.168.145.132 slave1
192.168.145.133 slave2
3. vim /etc/sysconfig/network
#把hostname值改成slave1
4. hostname slave1
slave2中
1. cd /usr/local/src/ #进入到Hadoop文件夹下,用cat先检查对应的配置文件是否确实修改完(正常来说,因为是复制过来的,不会有问题)
2. vim /etc/hosts #修改hosts最后面加入
192.168.145.130 master
192.168.145.132 slave1
192.168.145.133 slave2
3. vim /etc/sysconfig/network
#把hostname值改成slave1
4. hostname slave1
在master、slave1、slave2中分别执行如下命令,关闭防火墙(应该是防止不同电脑配置有瑕疵吧)
1. /etc/init.d/iptables stop
2. iptables -L #检查一下
3. setenforce 0 #避免发生。。。问题(不太懂,先照做)
4. getenforce
建立每台机器的互信关系(不用密码验证)
master下
1. ssh-keygen #中途一直按回车就行,应该是生成公钥私钥文件的过程吧(我猜的)
2. cd ~/.ssh #进入到根目录下的隐藏目录ssh下
3. ls #显示当前目录下的文件,其中有id_rsa.pub:公钥文件,id_rsa:私钥文件
4. cp id_rsa.pub authorized_keys #复制公钥文件到authorized_keys文件中(这个文件会保存slave中的公钥内容)
5. 在slave1和slave2中分别进行ssh-keygen操作,并把各自的公钥文件中的内容复制粘贴到master的authorized_keys下
6. scp -rp authorized_keys slave1:~/.ssh #将authorized_keys远程复制到slave1的ssh中
7. scp -rp authorized_keys slave2:~/.ssh
现在就可以无密码连接啦,可以试试在master中
1. ssh slave1 #连接到slave1,此时应该不用输入密码了,其他的slave也是这样
2. exit #退出回到当前机器下
测试Hadoop集群
经过了漫长的配置(这配置过程真是要把我整崩溃了的说),终于到了这一步,是不是小兴奋了的说~
master中:
1. cd /usr/local/src/hadoop-1.2.1/bin #进入到Hadoop文件夹下
2. ./hadoop namenode -format #第一次使用Hadoop要先对namenode格式化一下
3. ./start-all.sh #启动Hadoop集群
不出意外的话现在就已经启动了,可以利用jps(显示当前进程)验证一下
master中的进程(其他的也差不多,当然如果具体 进程不同也不用太纠结)用几个Hadoop命令测试一下
1. ./hadoop fs -ls / #显示Hadoop文件夹中的文件
2. ./hadoop fs -put /etc/passwd / #把passwd文件上传到Hadoop文件集群中
3. ./hadoop fs -cat /passwd #查看刚刚上传的passwd文件内容
Linux中常用快捷键总结:
shift+ctrl+C/V #复制、粘贴