Hadoop集群搭建

Hadoop_logo

前置条件:

1、三台机器,这里通过创建三个VMware虚拟机来模拟三台物理机器
2、Linux系统,例如Ubuntu、CentOS、Fedora等,这里是Ubuntu10.04
3、jdk for linux版本,这里是jdk-6u25-linux-i586.bin
4、Hadoop文件,这里我们选的是hadoop-0.20.1.tar.gz文件


一、安装Linux系统

$sudo apt-get update  #更新系统,需连网


二、更改主机名,映射IP地址

1、
$sudo gedit /etc/hostname    #主机名master、backup、slave
$source /etc/hostname


2、
$ifconfig  #查看IP地址
$sudo gedit /etc/hosts       #IP地址与主机名的映射
192.168.117.138 master 
192.168.117.136 backup
192.168.117.139 slave
$source /etc/hosts      #使文件修改生效(需要重启生效)


三、安装jdk

1、将jdk-6u25-linux-i586.bin拷贝到/home/tom目录下
或用命令$cp ~/Desktop/jdk-6u25-linux-i586.bin /home/tom


2、tom@master:~/home/tom$ chmod u+x jdk-6u25-linux-i586.bin
为文件所有者增加可执行权限


3、执行安装文件:
$./jdk-6u25-linux-i586.bin


4、$sudo gedit /etc/profile
在profile文件中添加如下内容:
export JAVA_HOME=/home/tom/jdk1.6.0_25
export JRE_HOME=/home/tom/jdk1.6.0_25/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH


$source /etc/profile #使修改生效


5、
$java -version
显示java version "1.6.0_25"。。。jdk安装成功


四、安装ssh服务

1、
$which ssh
$which sshd
$which ssh-keygen
$ssh localhost
$ps -e | grep ssh
$sudo apt-get install ssh  #Ubuntu下必须要连网安装




2、master生成SSH密钥对
[tom@master]$ssh-keygen -t rsa   #密钥生成过程中务必使用空口令(一路回车)
$cp ~/.ssh/id_rsa.pub  ~/.ssh/authorized_keys   #复制密钥
$more /home/tom/.ssh/id_rsa.pub  #查看公钥内容


3、将公钥复制到主节点和每个从节点
[tom@master]$scp ~/.ssh/id_rsa.pub tom@backup:~/.ssh/master_key
[tom@master]$scp ~/.ssh/id_rsa.pub tom@slave:~/.ssh/master_key


4、在从节点上,并设置主节点的密钥为授权密钥
[tom@backup/slave]$ mkdir ~/.ssh
$chmod 700 ~/.ssh
$mv ~/.ssh/master_key ~/.ssh/authorized_keys   #重命名为authorized_keys
$chmod 600 ~/.ssh/authorized_keys


5、远程登录验证SSH
[tom@master]$ ssh 192.168.117.136 
或[tom@master]$ ssh backup
[tom@master]$ ssh 192.168.117.139 
或[tom@master]$ ssh slave


五、配置hadoop环境--全分布模式

1、将hadoop-0.20.1.tar.gz文件拷贝到/home/tom目录下


2、tom@master:$ tar -xzvf hadoop-0.20.1.tar.gz  #解压文件


3、tom@master:$ chown  tom:tom hadoop-0.20.1   #将文件夹所有者改成tom(注意区别chmod命令和chown命令)


4、tom@master:$ sudo gedit /etc/profile
在profile文件中添加如下信息,配置环境变量:
export HADOOP_HOME=/home/tom/hadoop-0.20.1
export PATH=$HADOOP_HOME/bin:$PATH


5、第五步:更改/home/tom/hadoop-0.20.1/conf目录下文件


文件①:[tom@master:~/home/tom/hadoop-0.20.1/conf/]$sudo gedit hadoop-env.sh
添加如下信息。
export JAVA_HOME=/home/tom/jdk1.6.0_25


文件②:[tom@master:~/home/tom/hadoop-0.20.1/conf]$sudo gedit masters
添加如下信息:
192.168.117.136


文件③:[tom@master:~/home/tom/hadoop-0.20.1/conf]$sudo gedit slaves
添加如下信息:
192.168.117.139


文件④:[tom@master:~/home/tom/hadoop-0.20.1/conf]$sudo gedit core-site.xml 
core-site.xml指定了NameNode的主机名和端口号
添加如下信息: 先建立tmp文件夹 
<configuration>
     <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/tom/tmp</value>
      <description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
      <name>fs.default.name</name>
      <value>hdfs://192.168.117.138:9000</value>
</property>
</configuration>
 
文件⑤:[tom@master:~/home/tom/hadoop-0.20.1/conf/]$sudo gedit hdfs-site.xml
hdfs-site.xml指定了HDFS的默认副本数
添加如下信息:
<configuration>
     <property>
      <name>dfs.replication</name>
      <value>1</value> 
     </property>


     <property>
      <name>fs.checkpoint.dir</name>
      <value>/home/tom/hdfs/namesecondary</value>
     </property>
</configuration>
 
文件⑥:[tom@master:~/home/tom/hadoop-0.20.1/conf]$sudo gedit mapred-site.xml
mapred-site.xml指定了JobTracker的主机名和端口号
添加如下信息:
<configuration>
<property>
      <name>mapred.job.tracker</name>
      <value>192.168.117.138:9001</value>
</property>
</configuration>


6、
[tom@master:~/]$ scp hadoop-0.20.1 tom@backup:/home/tom/hadoop-0.20.1    
[tom@master:~/]$ scp hadoop-0.20.1 tom@slave:/home/tom/hadoop-0.20.1
将master中配置好的Hadoop-0.20.1文件夹拷入backup和slave 中对应的/home/tom目录下


六、执行Wordcount程序

1、格式化一个新的分布式文件系统
[tom@master:~/hadoop-0.20.1/bin/]$ hadoop namenode –format


2、启动所有的守护进程
第二步:[tom@master:~/hadoop-0.20.1/]$ bin/start-all.sh


3、[tom@master:~/hadoop-0.20.1]/$ jps
全分布模式下:
NameNode
JobTracker
Jps


[tom@backup:~/hadoop-0.20.1]/$ jps
SecondaryNameNode
Jps


[tom@slave:~/hadoop-0.20.1]/$ jps
DataNode
TaskTracker
Jps




4、
[tom@master:~/soft/]$ echo “Hello LNU Hello 208” > file01
[tom@master:~/soft/]$ echo “Hello Hadoop Goodbye Hadoop” > file02


5、
[tom@master:~/hadoop-0.20.1]$ hadoop fs -mkdir input  
#在当前目录下建文件夹input
[tom@master:~/hadoop-0.20.1]$ bin/hadoop fs -put file01 input
[tom@master:~/hadoop-0.20.1]$ bin/hadoop fs -copyFromLocal file02 input


6、
[tom@master:~/hadoop-0.20.1]$ hadoop jar hadoop-0.20.1-examples.jar wordcount input output
执行wordcount程序


7、
[tom@master:~/hadoop-0.20.1/]$ hadoop fs -cat output/*
或者[tom@master:~/hadoop-0.20.1/]$ more output/part-r-00000
结果:
Hello 3
LNU 1
208 1
Hadoop 2
Goodbye 1


七、单机(本地)模式和伪分布模式

单机模式、伪分布模式与全分布模式的许多配置过程都是相同的,下面只说一下与全分布模式配置过程的不同之处。
1、单机模式
在这种默认模式下,hadoop-0.20.1/conf目录下的三个配置文件core-site.xml、mapred-site.xml和hdfs-site.xml均为空,/etc/hosts文件中只有自身localhost。
当配置文件为空时,Hadoop会完全运行在本地,不需要与其他节点交互,不用HDFS,也不加载任何Hadoop的守护进程,也不会与守护进程交互,避免引起额外的复杂性,主要用于开发调试MapReduce程序的应用逻辑。


2、伪分布模式
伪分布模式是在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上,相当于一台服务器同时具有master、backup和slave多台服务器的功能,这是一种伪分布。
在/etc/hosts文件中,master、backup和slave都映射到同一个IP地址,即是本地主机的IP地址。
在hadoop-0.20.1/conf目录下,core-site.xml、hdfs-site.xml和mapred-site.xml、hadoop-env.sh的配置和全分布模式下相同,masters文件存的是本地主机localhost,salves文件中存的也是本地主机localhost。


用命令$start-all.sh启动服务器上的所有守护进程并用jps命令查看:
[tom@master] $ start-all.sh
[tom@master] $ jps
NameNode
JobTracker
SecondaryNameNode
DataNode
TaskTracker
Jps


八、几点注意

1、执行Linux命令时尤其是对文件进行操作时,注意绝对路径和相对路径。
2、Ubuntu系统自身不带ssh-server,在生成RSA密钥前需要在连网的情况下使用$sudo apt-get install ssh命令安装ssh-server,否则配置工作无法继续。
3、在 生成RSA密钥的过程中务必使用空口令(按回车跳过),否则后面master主节点每次访问其他节点时,都要求手动输入该口令。
4、对于Hadoop而言,当遇到错误时,第一时间应是查看日志,日志里通产会有详细的错误原因提示。
5、 各个机器必须要有相同的用户名(username)和用户目录(/home/username),而机器名(hostname)不同!

OVER!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值