FreeBSD下安裝配置Hadoop叢集(三)

weixin_34377065發表於2012-03-09
先給自己做個廣告:

開源Hive管理工具phpHiveAdmin今日更新0.05 beta2

ChangeLog:

1. sql查詢頁全部重寫,複雜查詢現在可以用非同步非阻塞的方式實時的檢視map/reduce進度,簡單的帶limit查詢,仍然採用thrift方式。
2. 改變查詢結果獲取方式,為防止大資料導致的php記憶體溢位,非limit結果的資料集將直接下載,僅提供30條預覽,全部資料可通過下載連結獲取。
3. 需下載資料,必須保證phpHiveAdmin/tmp目錄的許可權正確

訪問 http://www.phphiveadmin.net 獲取更多詳細資訊。

#-----------------------------------------------------

上次說的NameNode的配置方法,在說Datanode的配置方法之前,我們先回到Namenode叢集。

你需要為namenode配置一個主機名,這個是必須的,hadoop叢集優先查詢/etc/hosts檔案進行匹配。所以現在我們給namenode一個主機名

namenode01 192.168.1.2

儲存到/etc/hosts檔案中

然後開啟Namenode $HADOOP_HOME/conf/masters檔案,寫入hadoopmaster-177.tj

開啟$HADOOP_HOME/conf/slaves檔案,寫入你的datanode主機名,每行一個。

儲存退出,當然相應的hdfs-site.xml,mapred-site.xml,core-site.xml中相應的主機名也要一併修改。

下面是DataNode的配置方式

#--------------------------------------------------------------

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://hadoopmaster-177.tj:9000</value>
<!--hadoop namenode地址和hdfs埠-->
    </property>
    <property>
        <name>fs.checkpoint.dir</name>
        <value>/opt/data/hadoop1/hdfs/namesecondary1,/opt/data/hadoop2/hdfs/namesecondary2</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,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache
.hadoop.io.compress.BZip2Codec</value>
<!--資料採用壓縮儲存-->
    </property>
    <property>
        <name>io.compression.codec.lzo.class</name>
        <value>com.hadoop.compression.lzo.LzoCodec</value>
<!--壓縮採用lzo方式-->
    </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</value>
        <description>    </description>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/opt/data/hadoop/hdfs/data,/opt/data/hadoop1/hdfs/data,/opt/data/hadoop2/hdfs/data,/opt/data/hadoop3/hdfs/data,/opt/data/hadoop4/hdfs/data</value>
<!--定義資料儲存所使用的硬碟,重要-->
        <description> </description>
    </property>
    <property>
        <name>dfs.http.address</name>
        <value>hadoopmaster-177.tj:50070</value>
    </property>
    <property>
        <name>dfs.secondary.http.address</name>
        <value>hadoopslave-189.tj:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
<!--資料儲存3份-->
    </property>
    <property>
        <name>dfs.datanode.du.reserved</name>
        <value>1073741824</value>
    </property>
    <property>
        <name>dfs.block.size</name>
        <value>134217728</value>
<!--資料塊大小128M-->
    </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>hadoopmaster-177.tj:9001</value>
    </property>
    <property>
        <name>mapred.local.dir</name>
        <value>/opt/data/hadoop/mapred/mrlocal,/opt/data/hadoop1/mapred/mrlocal,/opt/data/hadoop2/mapred/mrlocal,/opt/data/hadoop3/mapred/mrlocal,/opt/data/hadoop4/mapred/mrlocal</v
alue>
        <final>true</final>
    </property>
    <property>
        <name>mapred.system.dir</name>
        <value>/opt/data/hadoop1/mapred/mrsystem</value>
        <final>true</final>
    </property>
    <property>
        <name>mapred.tasktracker.map.tasks.maximum</name>
        <value>12</value>
<!--定義該datanode的map槽位-->
        <final>true</final>
    </property>
    <property>
        <name>mapred.tasktracker.reduce.tasks.maximum</name>
        <value>4</value>
<!--定義該datanode的reduce槽位-->
        <final>true</final>
    </property>
    <property>
        <name>mapred.map.child.java.opts</name>
        <value>-Xmx1224M</value>
<!--map的java虛擬機器的記憶體佔用-->
    </property>
    <property>
        <name>mapred.reduce.child.java.opts</name>
        <value>-Xmx2048M</value>
<!--reduce的虛擬機器記憶體佔用-->
    </property>
    <property>
        <name>mapred.reduce.parallel.copies</name>
        <value>10</value>
    </property>
    <property>
        <name>io.sort.factor</name>
        <value>100</value>
    </property>
    <property>
        <name>mapred.job.reduce.input.buffer.percent</name>
        <value>0.3</value>
    </property>
    <property>
        <name>mapred.compress.map.output</name>
        <value>true</value>
<!--使用壓縮格式輸出map結果-->
    </property>
    <property>
        <name>mapred.map.output.compression.codec</name>
        <value>com.hadoop.compression.lzo.LzoCodec</value>
<!--壓縮所採用的格式-->
    </property>
    <property>
        <name>mapred.child.java.opts</name>
        <value>-Djava.library.path=/opt/hadoopgpl/native/Linux-amd64-64</value>
<!--壓縮輸出的保證,hadoopgpl,超重要-->
    </property>
    <property>
        <name>io.sort.mb</name>
        <value>600</value>
    </property>
    <property>
        <name>fs.inmemory.size.mb</name>
        <value>500</value>
    </property>
</configuration>


然後需要在Datanode的/etc/hosts檔案裡寫上自身和NameNode的主機名與IP
例如:

namenode01 192.168.1.2
datanode01 192.168.1.10

你每新增一臺datanode,都需要在每臺伺服器的/etc/hosts檔案中新增該伺服器的主機名和地址。這算是hadoop不太方便的一點。當然,masters和slaves檔案裡也要寫上。

Datanode的配置就結束了。下次說下namenode的備份,也就是secodary的配置。namenode也是可以熱備份以防止單點故障的。這就是為什麼我的datanode01的IP是從192.168.1.10開始的

如果你對這個系列有任何疑問或不解,或者配置失敗,請到暴風影音建立的easyhadoop群裡提問。QQ群號是93086930

相關文章