硬件要求:8G以上
集群:至少4台服务器
Linux集群基础配置
hadoop伪分布式系统配置
VM安装Linux虚拟机环境
VM克隆Linux虚拟机集群配置
1、操作系统:jdk(安装,环境PATH),ssh(免密钥)
2、部署hadoop,jdk2次配置,修改hadoop配置,core,hdfs
3、format >>> fsimage,version
4、start-dfs.sh
主机名 | 机器ip | NN | SNN | DN |
---|---|---|---|---|
node001 | 192.168.118.101/24 | * | ||
node002 | 192.168.118.102/24 | * | * | |
node003 | 192.168.118.103/24 | * | ||
node004 | 192.168.118.104/24 | * |
配置文件:core-site.xml、hdfs-site.xml、slaves
每台服务器都要配置
(1)JDK安装,配置环境变量
rpm -i jdk-7u67-linux-x64.rpm
rpm 安装,不是每个命令都有软连接——> 配置固定的!用jps去验证
vi /etc/profile
(2)ssh 免密钥
ssh登陆所有节点一次:ssh localhost
,产生~/.ssh/known_hosts
# node001 生成密钥 dsa加密,-大写P 密码为空,-f 到那个文件
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
# 把公钥复制到authorized_keys 自己能免密登陆本机
# 把authorized_keys 拷贝到别的机器上 ,node001就能免密登陆它
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
管理节点:我想登陆谁,把我的公钥放到 它.ssh的authorize_keys里面
控制节点scp自己的id_dsa.pub分发到其他节点
node001免密登陆node003
[root@node001 .ssh]# scp id_dsa.pub root@node003:`pwd`/node001.pub
[root@node003 ~]# cat ~/.ssh/node001.pub >> ~/.ssh/authorized_keys
一步到位
[root@node001 ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub root@node001
(3)上传hadoop.tar.gz到服务器
解压:tar -xf hadoop*.tar.gz
移动到/opt: mv hadoop-2.6.5 /opt
export JAVA_HOME=/usr/java/jdk1.7.0_67
export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在伪分布 Single Node Setup 的基础上搭建,下面给出hadoop集群搭建全过程
hadoop环境配置
/opt/hadoop-2.6.5/etc/hadoop
(1)xxx-env.sh
JAVA_HOME,2次配置(系统环境,脚本再次制定)
硬赋值,绝对路径,不引用!
JAVA_HOME=/usr/java/jdk1.7.0_67
(2)core-site.xml
配置:NameNode
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node001:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop/local</value>
</property>
</configuration>
注意:hadoop.tmp.dir默认是/tmp/目录,需要手动指定一个持久目录
name\data存储目录都引用 —> ${hadoop.tmp.dir}
(3)hdfs-site.xml
配置:SecondNameNode
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node002:50090</value>
</property>
<configuration>
设置SNN的http-address的节点主机名会让SNN去具体的节点启动
(4)slaves
配置:DataNode所在节点
node002
node003
node004
以上在控制节点配置完成
分发部署包到其他节点
[root@node001 opt]# scp -r ./hadoop-2.6.5/ node002:`pwd`
[root@node001 opt]# scp -r ./hadoop-2.6.5/ node003:`pwd`
[root@node001 opt]# scp -r ./hadoop-2.6.5/ node004:`pwd`
- 控制节点,第1次使用必须格式化:
hdfs namenode -format
- 控制节点启动:
start-dfs.sh
- 每个节点jps验证:
jps
- 验证:浏览器
node001:50070
/opt/hadoop-2.6.5
bin 决策功能脚本
sbin 管理脚本
配置文件
*-env.sh:jdk
core-site.xml:
fs.defaultFS namenode节点
hadoop.tmp.dir:NN.dir,DN.dir
hdfs-site.xml:副本数
slaves:
datanode节点列表
HDFS集群有clusterID,datanode启动时会和namenode对比clusterID
如果相同,启动成功,如果不同,自杀进程
启动:hdfs namenode –format
去观察hadoop.tmp.dir设置的目录变化
注意,这个目录必须是空的
如果,报错等,想重新格式化,需要先删除
网友评论