美文网首页
配置分布式hadoop环境(*nix)

配置分布式hadoop环境(*nix)

作者: cdarling | 来源:发表于2019-01-17 17:07 被阅读0次

    基于配置单机hadoop的基础上继续

    ssh连接密钥步骤1:改权限

    touch ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    

    ssh连接密钥步骤2:添加本机密钥到远程主机的允许访问列表,参考远程执行ssh代码

    ssh <remote_hostname> 'cat ~/.ssh/id_rsa.pub' >> ~/.ssh/authorized_keys
    

    配置xml步骤1:分布式HDFS

    core-site.xml

    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://c-1:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop/tmp</value>
    </property>
    </configuration>
    

    其中的fs.defaultFS表示主节点URL

    hadoop.tmp.dir是其他目录的基础目录,如果没有指定其他目录,就都放在这个文件夹里

    hdfs-site.xml

    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    </configuration>
    

    以上是设置文件块的复本数量,默认是3个

    slaves

    c-1
    c-2
    c-3
    

    以上文本文件中包含了所有datanode的hostname

    注意,以上三个文件要在所有节点上修改一致,并放在同样的目录中
    否则,三个节点不一样,子节点有配置错误就可能无法启动,主节点不显示子节点报错

    启动分布式HDFS集群

    export HADOOP_CONF_DIR=`pwd`
    $HADOOP_HOME/bin/hadoop namenode -format
    $HADOOP_HOME/sbin/start-dfs.sh
    

    第一次启动前要记得格式化namenode,后续不需要

    如果,datanode,比如c-2连接不上,可以尝试

    手工启动datanode,在datanode上(之前xml配置中namenode自己也配置了datanode角色)运行

    sbin/hadoop-daemon.sh start datanode
    

    如果格式化namenode但与datanode没连上,可能两次格式化产生的clusterID不同,检查办法见参考链接1参考链接2

    此时HDFS服务应该已经启动,可以命令查看

    curl c-1:50070
    

    或者在网页查看

    http://c-1:50070
    

    可以使用命令查看HDFS文件,或者上传文件到HDFS

    echo "hello world" >> input
    hadoop fs -mkdir -p .
    hadoop fs -put input .
    hadoop fs -ls .
    hadoop fs -cat input
    

    以上先为当前用户创建了文件夹,因为在HDFS里本来是没有/user/<username>的
    这些命令可以在集群内使用相同的$HADOOP_HOME文件夹内的程序调用,也可以在其他能访问到namenode节点的主机上,使用其他主机上的hadoop程序包运行

    下面设置yarn-site.xml

    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>c-1</value>
    </property>
    </configuration>
    

    以上aux-services表示yarn的nodemanager需要提供map/reduce算法之间的shuffle功能,这个功能是连接map算法与reduce算法间的桥梁

    之前给HDFS配置的slaves同样会用于yarn,resourcemanager管理的nodemanager在启动时会尝试连接resourcemanager,如果没有配置,默认就是它自己。start-yarn在主节点发起,会让slave节点启动datanode和nodemanager,而并不会在上面启动namenode或者resourcemanager,所以slave节点上没有启动resourcemanager,它也找不到。而看起来,集群就是没有主节点。参考链接

    下面启动yarn集群

    sbin/start-yarn.sh
    

    现在可以查看yarn页面了

    http://c-1:8088
    

    下面运行hello world程序

    hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-examples-x.y.z.jar wordcount input output
    hadoop fs -ls output/
    hadoop fs -cat output/*
    

    以上命令可以在集群内运行,也可以在客户端运行。根据xml配置,其中input文件是保存在HDFS上的。

    下面删除输出文件

    hadoop fs -rm -r -f output
    

    关闭集群

    sbin/stop-yarn.sh
    sbin/stop-dfs.sh
    

    重启集群时,可能会处于safemode一段时间,比如半分钟,可以在namenode网页查看startup progress

    使用命令查看safemode状态

    hdfs dfsadmin -safemode get
    

    无论在namenode还是datanode都可以在utility查看log,而namenode查看文件系统

    相关文章

      网友评论

          本文标题:配置分布式hadoop环境(*nix)

          本文链接:https://www.haomeiwen.com/subject/tfoidqtx.html