9.23学习笔记
完全分布式 HDFS
slaves(或 workers)文件决定 DataNode 列表;本次写入:
node2
node3
副本放置策略:
第 1 副本→客户端本地机架,第 2 副本→不同机架,第 3 副本→与第 2 同机架另一节点。
扩容命令:
bash
hdfs dfsadmin -report
hdfs dfsadmin -refreshNodes
YARN 基础
资源抽象:Container = <vcore, mem>
调度器:
– Capacity:多队列,共享集群
– Fair:动态公平
– FIFO:默认,测试用
MapReduce 作业提交流程:
Job.submit() → YARN Runner → ResourceManager → ApplicationMaster → Container 启动 Task
HBase 分布式要点
外置 ZK 时 hbase-site.xml 必须:
xml
create 't1','cf',SPLITS => ['10','20','30','40','50','60','70','80','90']
Rowkey 设计三原则:长度短、散列、业务有序。
实操流水账
克隆 & 网络
bash
在 VMware 对 node1 做「完整克隆」生成 node2/3
修改 MAC 与 IP
sed -i 's/80.11/80.12/g' /etc/sysconfig/network-scripts/ifcfg-ens33
依次重启
SSH 免密(root 互访)
在 node1
ssh-keygen -t rsa -P ""
for i in 11 12 13; do ssh-copy-id 192.168.80.$i; done
完全分布式 Hadoop
bash
core-site.xml
fs.defaultFS=hdfs://node1:9000
hdfs-site.xml
dfs.replication=3
workers
echo -e "node2\nnode3" > $HADOOP_HOME/etc/hadoop/workers
格式化(仅首次)
hdfs namenode -format
start-dfs.sh
验证:
http://node1:9870 → Live Nodes=2
1 GB 文件上传测试
bash
dd if=/dev/zero of=1g.bin bs=1M count=1024
time hdfs dfs -put 1g.bin /test
结果:42.7 s,吞吐 ≈ 23.4 MB/s
YARN 启动 & Pi 作业
bash
start-yarn.sh
提交
mapred jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 10 1000
输出:Estimated value of Pi is 3.1416
耗时:18 s
Web UI:http://node1:8088
ZooKeeper 集群
bash
解压到 /opt/zookeeper
zoo.cfg(3 台相同)
tickTime=2000
initLimit=5
syncLimit=2
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
myid
echo 1 > /opt/zookeeper/data/myid # node2→2, node3→3
zkServer.sh start
zkServer.sh status # 1 leader + 2 follower
HBase 分布式
bash
配置完后同步到 3 节点
start-hbase.sh
region 分布
hbase hbck -details
Web UI:http://node1:16010
百万行压测脚本(Ruby)
ruby
for i in 0..999999
put 'perf', "row#{i}", 'cf:v', "#{i}"
end
结果:
– 耗时 82 s
– 平均吞吐 ≈ 12 200 row/s
– 节点 CPU 峰值 67 %(top 观测)
浙公网安备 33010602011771号