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

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

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

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

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

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

配置xml步骤1:分布式HDFS

core-site.xml



fs.defaultFS
hdfs://c-1:9000


hadoop.tmp.dir
/data/hadoop/tmp


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

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

hdfs-site.xml



dfs.replication
1


以上是设置文件块的复本数量,默认是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/
这些命令可以在集群内使用相同的$HADOOP_HOME文件夹内的程序调用,也可以在其他能访问到namenode节点的主机上,使用其他主机上的hadoop程序包运行

下面设置yarn-site.xml


yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.resourcemanager.hostname
c-1


以上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))