Posted on 2012-04-15 16:37
zljpp 閱讀(215)
評論(0) 編輯 收藏
? ? ? ? 目前我們使用的是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溝通,了解要操作的數據所在的位置,盡量的讓任務在數據所在的服務器上執(zhí)行。現在配置的服務器有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在執(zhí)行ssh s1,ssh s2這樣的命令時不需要輸入密碼。在m1服務器上執(zhí)行ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa?
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys拷貝id_dsa.pub到s1服務器上,執(zhí)行cat id_dsa.pub >> ~/.ssh/authorized_keys?
拷貝id_dsa.pub到s2服務器上,執(zhí)行cat id_dsa.pub >> ~/.ssh/authorized_keys?
執(zhí)行上面的命令時如果沒有相應目錄,則先創(chuàng)建測試一下,第一次執(zhí)行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 人發(fā)表留言,猛擊->>這里<<-參與討論
ITeye推薦