注意:DataNode的本地目录可以设置多个,你可以设置 dfs.datanode.failed.volumes.tolerated 参数的值,表示能够容忍不超过该个数的目录失败。
2.3 配置 SecondaryNameNode配置 SecondaryNameNode 需要在 /etc/hadoop/conf/hdfs-site.xml 中添加以下参数:
dfs.namenode.checkpoint.check.period dfs.namenode.checkpoint.txns dfs.namenode.checkpoint.dir dfs.namenode.checkpoint.edits.dir dfs.namenode.num.checkpoints.retained
在 /etc/hadoop/conf/hdfs-site.xml 中加入如下配置,将cdh2设置为 SecondaryNameNode:
<property> <name>dfs.secondary.http.address</name> <value>cdh2:50090</value> </property>
设置多个secondarynamenode,请参考multi-host-secondarynamenode-configuration.
2.4 开启回收站功能回收站功能默认是关闭的,建议打开。在 /etc/hadoop/conf/core-site.xml 中添加如下两个参数:
fs.trash.interval,该参数值为时间间隔,单位为分钟,默认为0,表示回收站功能关闭。该值表示回收站中文件保存多长时间,如果服务端配置了该参数,则忽略客户端的配置;如果服务端关闭了该参数,则检查客户端是否有配置该参数;
fs.trash.checkpoint.interval,该参数值为时间间隔,单位为分钟,默认为0。该值表示检查回收站时间间隔,该值要小于fs.trash.interval,该值在服务端配置。如果该值设置为0,则使用 fs.trash.interval 的值。
2.5 (可选)配置DataNode存储的负载均衡在 /etc/hadoop/conf/hdfs-site.xml 中配置以下三个参数:
dfs.datanode.fsdataset. volume.choosing.policy
dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold
dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction
详细说明,请参考 。
2.6 开启WebHDFS在NameNode节点上安装:
$ yum install hadoop-httpfs -y
然后修改 /etc/hadoop/conf/core-site.xml配置代理用户:
<property> <name>hadoop.proxyuser.httpfs.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.httpfs.groups</name> <value>*</value> </property>
2.7 配置LZO下载repo文件到 /etc/yum.repos.d/:
然后,安装lzo:
$ yum install hadoop-lzo* impala-lzo -y
最后,在 /etc/hadoop/conf/core-site.xml 中添加如下配置:
<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,com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec</value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property>
更多关于LZO信息,请参考:Using LZO Compression
2.8 (可选)配置Snappycdh 的 rpm 源中默认已经包含了 snappy ,直接在每个节点安装Snappy:
$ yum install snappy snappy-devel -y
然后,在 core-site.xml 中修改io.compression.codecs的值,添加 org.apache.hadoop.io.compress.SnappyCodec 。
使 snappy 对 hadoop 可用:
$ ln -sf /usr/lib64/libsnappy.so /usr/lib/hadoop/lib/native/
2.9 启动HDFS将cdh1上的配置文件同步到每一个节点:
$ scp -r /etc/hadoop/conf root@cdh2:/etc/hadoop/ $ scp -r /etc/hadoop/conf root@cdh3:/etc/hadoop/
在cdh1节点格式化NameNode:
$ sudo -u hdfs hadoop namenode -format
在每个节点运行下面命令启动hdfs:
$ for x in `ls /etc/init.d/|grep hadoop-hdfs` ; do service $x start ; done
在 hdfs 运行之后,创建 /tmp 临时目录,并设置权限为 1777:
$ sudo -u hdfs hadoop fs -mkdir /tmp $ sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
如果安装了HttpFS,则启动 HttpFS 服务:
$ service hadoop-httpfs start
2.10 测试通过 :50070/ 可以访问 NameNode 页面。使用 curl 运行下面命令,可以测试 webhdfs 并查看执行结果: