先给自己做个广告:

开源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