hadoop集群(完全分布式)配置步骤(测试通过)

通过阅读大量的资料,在尽力 过无数的异常之后,自己机子上的hadoop完全正常的跑起来了。现在将全部的步骤记录下来,供将来以后进行查询。

本文将分一下几部分的内容:

一:linux环境搭建(关于主机地址和防火墙以及ssh和jdk和hadoop安装);

二:linux下hadoop环境配置;

三:如何在windows下访问linux中的集群;

四;在windows进行hadoop编程。


(号外:其实本人忘记是什么时候接触云计算的了,知识当时觉得他很是神奇,于是,在没有任何的准备下就进行了云计算的学习,现在来说,感觉挺有趣的,就是网上完整的项目有点少,摸索起来的话还是有点problem的)


一:linux环境搭建;

首先,对于集群来说,主机是不可少的,于是乎,你需要的是拥有几台主机,如果你有足够的资金的话,否则,你就需要你的电脑有足够的内存跑起虚拟机内的三台主机了,当然,本人选用的是第二种。

看下我的电脑配置,照理说,4G的内存足够了。


然后安装linux,本人选用的是rehat5,大家的话自行选择。首先安装一台(接下来的两台进行复制黏贴就行)。

如何安装的话大家自行百度。安装好后请自行把linux的时间进行同步,并新建用户hadoop(接下讲下关于主机ip地址和防火墙以及ssh)

(以下操作需要root权限,用root用户登录就行)

主机的ip地址,这里需要注意的是,建议把主机的ip地址设置为跟windows 下ip地址处于同一个网段,因为后

需要注意的是,我们需要在虚拟机里面吧network connection 设置为Bridged,(复制出来的每台机【节点】都要)


面会让你在windows下进行hdfs的操作给予莫大的方便。

我windows 下的ip是192.168.0.100,于是,我把第一台linux的ip设置为192.168.0.110,子关掩码255.255.255.0

并将hostname 改为了master。这些配置在命令行里面输入setup,在出现的那个界面进行修改,顺便把防火墙关了



还有就是修改hosts文件,这是我的hosts文件,我顺便把其他两台的ip地址和hostname。


接下来安装jdk和hadoop,我这里的版本是jdk 1.6 和 hadoop 1.0.3 (如何安装在这里不讲解,就是一个解压的过程,测试中发现安装jdk 后是不用设置环境变量的,它应该是自己帮你设置好了。)

以上的步骤做好了之后就是复制另外两台主机出来啦,直接到  我的文档/Virtual Machines/ 文件夹下copy两台出来再导入就行。然后修改主机名和主机IP地址。

记得查看修改有没有生效。



最后就是ssh了,使每台master能通过ssh无密码登录node1和node2。具体操作如下:

在master这台机器上,以hadoop用户登录:

#   su hadoop

#  cd /home/hadoop

# ssh-keygen -t rsa (一直回车,即在本地生成了公钥和私钥,不设置密码)
# cd .ssh (这是一个隐藏文件夹)
# cp id_rsa.pub authorized_keys
接着在这里测试是不是在本机可以无密码登录
# ssh master (如果有提示信息请选择yes)
可以正常登录的话就可以就可以做以下步骤:
在node1和node2上,以hadoop用户登录,同样运行 命令
# ssh-keygen -t rsa (一直回车,即在本地生成了公钥和私钥,不设置密码,只需要运行这句就行)

回到master上将authorized_keys 复制到 node1 和node2 上
# scp /home/hadoop/.ssh/authorized_keys node1:/home/hadoop/.ssh/(如需要密码则输入node1 的密码)
# scp /home/hadoop/.ssh/authorized_keys node2:/home/hadoop/.ssh/(如需要密码则输入node2 的密码)

测试可不可以无密码登录node1和node2
回到master(注意以hadoop用户登录)
# ssh node1
# ssh node2
能正常无密码登录的话就ok了,否则,请查看以上步骤。


二:linux下hadoop环境配置;

这是我的profile 文件 (/etc/profile)

里面配置了JAVA_HOME、HADOOP_INSTALL的安装路径



如何进行hadoop 的环境配置呢;

我们需要修改 hadoop-1.0.3\conf\hadoop-env.sh core-site.xml  hdfs-site.xml mapred-site.xml masters slaves 这六个文件

首先,修改hadoop-env.sh,加入你的JAVA_HOME路径



修改core-site.xml 文件

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>fs.default.name</name>
<value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop_home/var</value>
  </property>

  <property>
    <name>fs.checkpoint.dir</name>
    <value>/data/hadoop/hdfs/namesecondary</value>
  </property>
  <property>
    <name>fs.checkpoint.period</name>
<value>1800</value>

  </property>
  <property>
    <name>fs.checkpoint.size</name>
<value>33554432</value>
  </property>
  <property>
    <name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
  </property>
   <property>
    <name>fs.trash.interval</name>
    <value>1440</value>
    <description>Hadoop trash auto time</description>
  </property>
</configuration>
修改 hdfs-site.xml文件

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->
<configuration>
  <property>
    <name>dfs.name.dir</name>
<value>/opt/data/hadoop/hdfs/name,/data1/hadoop/hdfs/name,/nfs/name</value>
    <description>  </description>
  </property>
  <property>
    <name>dfs.data.dir</name>
<value>/opt/data/hadoop/hdfs/data,/data1/hadoop/hdfs/data</value>
    <description> </description>
  </property>
  <property>
    <name>dfs.http.address</name>
<value>master:50070</value>
  </property>
  <property>
    <name>dfs.secondary.http.address</name>
<value>master:50090</value>
  </property>
  <property>
    <name>dfs.replication</name>
<value>3</value>
  </property>
  <property>
    <name>dfs.datanode.du.reserved</name>
<value>1073741824</value>
  </property>
  <property>
    <name>dfs.block.size</name>
<value>134217728</value>
  </property>
  <property>
    <name>dfs.permissions</name>
<value>false</value>
  </property>

</configuration>

修改 mapred-site.xml 文件
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>
    <name>mapred.job.tracker</name>
<value>master:9001</value>
  </property>
  <property>
    <name>mapred.local.dir</name>
<value>/opt/data/hadoop/mapred/mrlocal</value>
    <final>true</final>
  </property>  
  <property>
    <name>mapred.system.dir</name>
    <value>/opt/data/hadoop/mapred/mrsystem</value>
<final>true</final>
  </property>  
  <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
<value>2</value>
<final>true</final>
  </property>  
  <property>
    <name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>1</value>
<final>true</final>
  </property>

  <property>
    <name>io.sort.mb</name>
    <value>32</value>
<final>true</final>
  </property>

  <property>
    <name>mapred.child.java.opts</name>
<value>-Xmx64M</value>
  </property>

  <property>
    <name>mapred.compress.map.output</name>
<value>true</value>
  </property>
</configuration>

修改masters文件(ip改为 master也行)


修改slaves 文件(ip改为node1和node2 也行)



以上步骤做好了以后,通过scp命令将修改后的文件复制到node1 和node2 两个节点中。

例如 # scp /opt/hadoop-1.0.3/conf/hadoop-env.sh node1:/opt/hadoop-1.0.3/conf/


最后,记得建立文件夹,并把权限交给hadoop 用户

根目录下



opt 目录下



接下你就可以在master下启动hadoop集群了。

先进行format。

# hadoop namenode -format

启动过程中注意看日志文件,出现没有文件夹的情况请自行建立文件夹

到此,集群启动成功。


三:如何在windows下访问linux中的集群;

非常容易,因为之前已经让虚拟机中linux的ip地址与windows下的ip地址处于同一网段,并且设置了桥接,

我们此时需要修改下C:\Windows\System32\drivers\etc\hosts 这个文件


修改完后,只需要在浏览器中输入 master:50070 或master:50030即可访问我们在虚拟机上的hadoop各个节点的健康状况了。

四;在windows进行hadoop编程。

首先,需要eclipse,我的版本是3.7.0;

其次,需要hadoop插件;hadoop-eclipse-plugin-1.0.3.jar,将插件放在eclipse 下plugins 文件夹中,重启eclipse(注意,这个插件必须和你的hadoop 版本号一致)

还有,你还需要



hadoop从你的linux 复制出来就行。

最后。



终结,程序员,你终于可以愉快的编程了。。。。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值