配置机器环境, 可参照 vmware虚拟机安装 及 scp配置
https://blog.csdn.net/flydedog/article/details/79851969
https://blog.csdn.net/flydedog/article/details/78533048解压安装包
tar -zxf software/hadoop-2.6.5.tar.gz -C ~/app/修改配置文件
vi /home/hadoop/app/hadoop-2.6.5/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_161/ # 替换掉原先的${JAVA_HOME}, 因为启动这个脚本的时候是在子bash中, 这个时候是读取不到配置的JAVA_HOME的, 是吗?
vi /home/hadoop/app/hadoop-2.6.5/etc/hadoop/core-site.xml
<property>
<name>fs.defaultFS</name> # 配置文件系统的uri
<value>hdfs://hadoop-nn-01:9000/</value> # 文件系统的节点(namenode)和端口
</property>
<property>
<name>hadoop.tmp.dir</name> # 配置hadoop临时文件存储目录
<value>/home/hadoop/hadoop-tmp</value>
</property>
vi /home/hadoop/app/hadoop-2.6.5/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name> # 配置secondarynamenode在本机
<value>hadoop-nn-01:50090</value>
</property>
vi /home/hadoop/app/hadoop-2.6.5/etc/hadoop/slaves
hadoop-dn-11 # 配置需要启动datanode的节点, 供sbin下的start-dfs.sh脚本使用
hadoop-dn-12
hadoop-dn-13
- 将修改完配置文件的hadoop使用scp传到所有节点
scp -r ~/app/hadoop-2.6.5/ hadoop@hadoop-dn-11:~/app/
- 配置hadoop环境变量
export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.5
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
- 初始化namenode
在namenode节点执行
hadoop namenode -format
测试启动namenode
hadoop-daemon.sh start namenode
hadoop-daemon.sh stop namenode
注:
若namenode节点重复初始化过的话, 此时datanode和namenode的clusterID的值可能不一致, 这个时候可能造成datanode启动失败, 此时可以将datanode的临时目录删掉再启动
- 测试启动
namenode节点执行
start-dfs.sh
stop-dfs.sh
http://192.168.0.1:50070 namenode的页面, 记得关闭防火墙 systemctl stop firewalld.service(systemctl disable firewalld.service)
- hdfs常用配置属性
副本数量: dfs.replication, 客户端参数, 默认三个副本, 第一个存在离客户端最近(跳数最少), 第二个存在和上一台相同的机架上, 第三个存在另一个机架上
文件块大小: dfs.blocksize, 客户端参数
元数据存储目录: dfs.namenode.name.dir, 服务端参数, 理论上应该个namenode配置一个专门的位置作为工作目录, 专门分配一块磁盘, 如果这个参数的值是由逗号分隔, 则hadoop会自身做冗余备份
datanode文件块存储目录: dfs.datanode.data.dir, 服务端参数, 理论上应该指定到专门用于存储数据的磁盘, 这个参数的值可由逗号分隔
yarn安装
vi /home/hadoop/app/hadoop-2.6.5/etc/hadoop/yarn-site.xml <property> <name>yarn.resourcemanager.hostname</name> # yarn主节点, 最好放在单独的一台机器上, 避免资源抢占 <value>hadoop-nn-01</value> </property> <property> <name>yarn.nodemanager.aux-services</name> # yarn从节点, 最好放在datanode上 <value>mapreduce_shuffle</value> # 这个值会使用slaves中的节点作为yarn从节点, 在启动yarn的时候自动注册 </property> cp /home/hadoop/app/hadoop-2.6.5/etc/hadoop/mapred-site.xml.template /home/hadoop/app/hadoop-2.6.5/etc/hadoop/mapred-site.xml vi /home/hadoop/app/hadoop-2.6.5/etc/hadoop/mapred-site.xml <property> <name>mapreduce.framework.name</name> # 注册mapreduce框架使用的的分布式计算程序是yarn, 不注册的话, mapreduce可能就是个单机程序了 <value>yarn</value> </property> 将以上两个配置文件拷贝到集群的其他主机: scp yarn-site.xml hadoop-dn-11:$PWD ... 启动yarn集群: start-yarn.sh