hadoop hdfs完全分布式搭建
检查环境:
1、jdk,java_home
2、主机名和ip地址映射
3、关闭所有机器的防火墙
4、检查所有主机date是否一致(如:绑定上海交通大学网上时间)
ntpdate -u ntp.sjtu.edu.cn
5、设置免密码ssh登陆:start-dfs.sh执行脚本时使用。
node1——》node2免密码 将node1中的公钥 追加到node2的验证文件中
scp ~/.ssh/id_dsa.pub root@node2:~/haha cat haha >> ~/.ssh/authorized_keys
node1——》node3免密码 将node1中的公钥 追加到node3的验证文件中
node1——》node4免密码
配置
1、修改hadoop-env.sh
配置java的环境变量 JAVA_HOME
配置各种环境变量 当前用户 在~/.bash_profile 中配置 系统环境变量在/etc/profile中配置
配置XXX_HOME=安装目录 PATH=$XXX_HOME/bin: ————path路径通过:分割 可执行路径一般是bin或者sbin
2、修改core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/data</value>
</property>
3、修改hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>node2:50091</value>
</property>
<!-- 关闭权限验证 :可以不配置 在java代码中配置主机名 -->
<!--FileSystem fs =FileSystem.get(new URI("hdfs://node1:9000"), config,"root");//改访问主机名字为namenode的用户名 使其拥有权限-->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
4、masters
配置SecondaryNodeName的主机名字(已经在/etc/hosts完成了映射关系)
例:node2
5、slaves
配置DataNode的各个主机名字(已经在/etc/hosts完成了映射关系),一行一个名字,没有空格
node3
node4
node2
6,
确保所有hadoop机器配置文件完全一样
将hadoop安装文件夹中etc/hadoop/* 全部拷贝到所有机器
拷贝所有的配置文件到所有的hadoop机器上
进入etc/hadoop/ scp ./* root@node2:安装或解压目录/etc/hadoop/
格式化namnode
hdfs namenode -format
(即:初始化元数据文件fsimage)
在node1上执行启动的脚本
start-dfs.sh
ps:
若已经启动过 要再一次格式化HDFS 即运行hdfs namenode -format
若重新格式化 要先将所有Hadoop机器中指定的fsimage的信息文件目录删除 以及所有机器上的安装中的logs文件删除
即删除core-site.xml文件所指定的已有目录
例:删除/home/data文件夹
<property>
<name>hadoop.tmp.dir</name>
<value>/home/data</value>
</property>