<property>
<name>hadoop.proxyuser.httpfs.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.httpfs.groups</name>
<value>*</value>
</property>
4.6配置LZO
安装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
4.7配置Snappy
cdh 的 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/
4.8HA配置
安装服务
在 75、76、77 上安装 hadoop-hdfs-journalnode
yum install hadoop-hdfs-journalnode -y
在 74、75(namenode) 上安装 hadoop-hdfs-zkfc:
yum install hadoop-hdfs-zkfc -y
修改配置文件
修改/etc/hadoop/conf/core-site.xml,做如下修改:
<property>
<name>fs.defaultFS</name>
<value>hdfs://bd-ops-test:8020</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>bd-ops-test-75:2181,bd-ops-test-76:2181,bd-ops-test-77:2181</value>
</property>
修改/etc/hadoop/conf/hdfs-site.xml
<property>
<name>dfs.nameservices</name>
<value>bd-ops-test</value>
</property>
<property>
<name>dfs.ha.namenodes.bd-ops-test</name>
<value>bd-ops-test-74,bd-ops-test-75</value>
</property>
<property>
<name>dfs.namenode.rpc-address.bd-ops-test.bd-ops-test-74</name>
<value>bd-ops-test-74:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.bd-ops-test.bd-ops-test-75</name>
<value>bd-ops-test-75:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.bd-ops-test.bd-ops-test-74</name>
<value>bd-ops-test-74:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.bd-ops-test.bd-ops-test-75</name>
<value>bd-ops-test-75:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://bd-ops-test-75:8485;bd-ops-test-76:8485;bd-ops-test-77:8485/bd-ops-test</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/hadoop/data1/hdfs/jn</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.bd-ops-test</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/var/lib/hadoop-hdfs/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
4.9启动HDFS
将74上的配置文件同步到每一个节点:
scp -r /etc/hadoop/conf root@bd-ops-test-75:/etc/hadoop/
scp -r /etc/hadoop/conf root@bd-ops-test-76:/etc/hadoop/
scp -r /etc/hadoop/conf root@bd-ops-test-77:/etc/hadoop/
在74节点格式化NameNode:
sudo -u hdfs hadoop namenode -format
启动journalnode
启动75、76、77上的 hadoop-hdfs-journalnode 服务
service hadoop-hdfs-journalnode start
初始化共享存储
在namenode上初始化共享存储,如果没有格式化,则先格式化:
hdfs namenode -initializeSharedEdits
启动第一个namenode(74)
service hadoop-hdfs-namenode start
同步 Standby NameNode
75作为 Standby NameNode,运行
sudo -u hdfs hadoop namenode -bootstrapStandby
然后,启动 Standby NameNode:
service hadoop-hdfs-namenode start
配置自动切换
在两个NameNode上,即74和75,安装hadoop-hdfs-zkfc
yum install hadoop-hdfs-zkfc -y
在任意一个NameNode上下面命令,其会创建一个znode用于自动故障转移
hdfs zkfc -formatZK
然后再两个 NameNode 节点上启动zkfc:
service hadoop-hdfs-zkfc start
启动datanode
在datanode节点运行:
service hadoop-hdfs-datanode start
如果安装了HttpFS,则启动 HttpFS 服务:
service hadoop-httpfs start
4.10测试
使用 curl 运行下面命令,可以测试 webhdfs 并查看执行结果:
# curl "http://localhost:14000/webhdfs/v1?op=gethomedirectory&user.name=hdfs"
{"Path":"\/user\/hdfs"}
更多的 API,请参考 WebHDFS REST API
分别访问 :50070/ 和 :50070/ 查看谁是 active namenode,谁是 standyby namenode。
查看某Namenode的状态: