通过阅读大量的资料,在尽力 过无数的异常之后,自己机子上的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
这是我的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 复制出来就行。
最后。
终结,程序员,你终于可以愉快的编程了。。。。