我的家园

我的家园

        目前我们使用的是hadoop的核心功能,在hadoop的网站上就是hadoop-core,里面包括两个部分,一个是HDFS,也就是hadoop distributed filesysem.一个是mapred,一个map/reduce的框架。 
在hadoop的架构中,对于hdfs,存在一个namenode,多个datanode,namenode存储的是各个datanode的元数据,比如他所在的服务器地址,存储了那些数据块等。当客户端访问hdfs时,他首先和namenode交互,得到他要的具体的datanode的信息,然后就可以和datanode进行交互了。也就相当于namenode是个路由表一样的情况。对于mapred,存在一个jobtracker,多个tasktracker,jobtracker的客户端组装job,描述map任务,reduce任务,输入输出的类型,最后把这个job提交给jobtracker。jobtracker会和namenode沟通,了解要操作的数据所在的位置,尽量的让任务在数据所在的服务器上执行。现在配置的服务器有3台,IP地址分别为192.168.16.107, 192.168.16.108,192.168.16.109.其中107这台会同时作为namenode和jobtracker,而108和109作为datanode和tasktracker. 
下面我们开始配置分布式的hadoop,一,首先给几台服务器取名,这里107取名为m1,108为s1,109为s2.107上修改为 
192.168.16.107 m1 
192.168.16.108 s1 
192.168.16.109 s2运行命令hostname m1测试一下,确定ping m1,ping s1,ping s2都能ping到。中间可能需要重启服务器。108上修改为 
192.168.16.107 m1 
192.168.16.108 s1运行命令hostname s1 
测试一下,确定ping m1,ping s1都能ping到。中间可能需要重启服务器。109上修改为 
192.168.16.107 m1 
192.168.16.109 s2运行命令hostname s2 
测试一下,确定ping m1,ping s2都能ping到。中间可能需要重启服务器。二,配置ssh证书,保证m1在执行ssh s1,ssh s2这样的命令时不需要输入密码。在m1服务器上执行ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys拷贝id_dsa.pub到s1服务器上,执行cat id_dsa.pub >> ~/.ssh/authorized_keys 
拷贝id_dsa.pub到s2服务器上,执行cat id_dsa.pub >> ~/.ssh/authorized_keys 
执行上面的命令时如果没有相应目录,则先创建测试一下,第一次执行ssh s1,ssh s2需要确认一下,是为了增加known host。三,修改nutch/conf下的几个配置文件,1)master的内容修改为 
m1,2)salves的内容修改为 
s1 
s23)hadoop-env.sh, 
export JAVA_HOME=/opt/java/latest 
export HADOOP_HOME=/root/nutch_bin 
export HADOOP_CONF_DIR=/root/nutch_bin/conf4)修改hadoop-site.xml<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration> 
<property> 
<name>fs.default.name</name> 
<value>hdfs://m1:9000</value> 
</property><property> 
<name>mapred.job.tracker</name> 
<value>m1:9001</value> 
</property><property> 
<name>hadoop.tmp.dir</name> 
<value>/root/nutch_bin/tmp</value> 
</property><property> 
<name>dfs.name.dir</name> 
<value>/root/nutch_bin/filesystem/name</value> 
</property><property> 
<name>dfs.data.dir</name> 
<value>/root/nutch_bin/filesystem/data</value> 
</property><property> 
<name>dfs.replication</name> 
<value>2</value> 
</property> 
</configuration>5)如3所示,nutch_bin目录在/root下。cd到root目录下,运行scp -r nutch_bin s1:/root/.再scp -r nutch_bin s2:/root/.6)运行nutch使用分布式的hadoopbin/start-all.sh 
bin/hadoop namenode -format 
bin/hadoop dfs -put urls urls 
bin/nutch crawl urls -dir crawl 
7)修改tomcat下的nutch.war,使其使用hdfs<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration> 
<property> 
<name>fs.default.name</name> 
<value>hdfs://m1:9000</value> 
</property> 
<property> 
<name>searcher.dir</name> 
<value>crawl</value> 
</property> 
</configuration>



已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐




只有注册用户登录后才能发表评论。


网站导航: