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>

原文地址:https://www.cnblogs.com/bingzhikun/p/4969823.html