环境:html
CentOS7+SunJDK1.8@VMware12。java
NameNode虚拟机节点主机名:master,IP规划:192.168.23.101,职责:Name node,Secondary name node,Resource manager。node
DataNode虚拟机节点主机名:slave1,IP规划:192.168.23.102,职责:Data node,Node manager。web
每一个虚拟机分配资源:CPU单颗,内存2GB,硬盘20GB。centos
过程概要:浏览器
过程详细:ruby
以master节点为例:网络
修改/etc/hosts为(注意:要把集群全部节点的ip跟主机名映射全加进来):app
修改:/etc/sysconfig/network-scripts/ifcfg-eno16777736为(经测试,此种方法可能会被系统再次动态增长一个IP地址,变成双IP。所以不如图形界面的方法可靠):ssh
或者在CentOS7的图形界面下,点击网络图标,IP改成手动,设置IP地址、掩码、网关、DNS(推荐)
上述为master节点。slave节点相似修改。确保双方IP能互相ping通。
命令:su root (切换到root用户)
命令:chmod u+w /etc/sudoers (给sudoers增长写权限)
命令:vi /etc/sudoers (修改sudoers文件)
执行命令后会进入sudoers文件的查看模式,该模式下按“i”进入文件修改模式,
而后在root ALL=(ALL) ALL下方增长hadoop ALL=(ALL)NOPASSWD:ALL 按 “esc”键推出修改模式,大写模式下,按两次“z”保存退出。
命令:chmod u-w /etc/sudoers (撤销sudoers文件的写权限)。
改后的/etc/sudoers文件内容以下:
把hadoop-2.6.4.tar.gz拷贝到/usr/下,解压:tar zxvf hadoop-2.6.4.tar.gz ,并用chmod、chgrp命令将其所属用户、用户组都改成hadoop(重要!不然hadoop没法在其中新建临时目录和日志)。效果以下:
Master机器上生成密码对。命令:ssh-keygen –t rsa (生成其无密码密钥对,一路回车键,生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录)
命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (把id_rsa.pub追加到受权的key里面去)
命令:chmod 600 ~/.ssh/authorized_keys(修改文件"authorized_keys"权限,这步骤很重要,不少莫名其妙的错误有可能就是权限的问题)
命令:sudo vi /etc/ssh/sshd_config (修改SSH配置文件"/etc/ssh/sshd_config"),修改以下内容:
RSAAuthentication yes # 启用 RSA 认证 PubkeyAuthentication yes # 启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
命令:service sshd restart(从新启动服务)
命令:ssh localhost (测试是否成功)
下面是把公钥复制到全部的slave节点上去:
命令:scp ~/.ssh/id_rsa.pub hadoop@192.168.239.129:~/(记得改为本身的ip,这个是个人slave1的ip,就是把master节点的公钥发送到了slave1的根目录下了)
systemctl stop firewalld.service #中止
systemctl disable firewalld.service #禁用
以前的版本:
service iptables stop #中止
chkconfig iptables off #禁用
在 /etc/profile
里添加
export HADOOP_HOME=/usr/hadoop-2.6.4/ export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在 hadoop 解压路径下面,/etc/hadoop/hadoop-env.sh 增长下面两行
export JAVA_HOME=/usr/java/jdk1.8.0_101 export HADOOP_PREFIX=/usr/hadoop-2.6.4
在 hadoop 解压路径下面,/etc/hadoop/core-site.xml增长下面内容:
<configuration>
<property> <name>fs.defaultFS</name> <value>hdfs://master:9000/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop-2.6.4/tmp</value> </property> </configuration>
在 hadoop 解压路径下面,/etc/hadoop/hdfs-site.xml 增长下面内容:
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
这里设置成2,表示数据有2个副本(数值不大于DataNode数)。
在 hadoop 解压路径下面,/etc/hadoop/mapred-site.xml 增长下面内容:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
在 hadoop 解压路径下面,/etc/hadoop/yarn-env.sh 增长下面,增长JAVA_HOME 配置:
export JAVA_HOME=/usr/java/jdk1.8.0_101
在 hadoop 解压路径下面,/etc/hadoop/yarn-site.xml 增长下面内容:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <description>The address of the applications manager interface in the RM.</description> <name>Yarn.resourcemanager.address</name> <value>master:18040</value> </property> <property> <description>The address of the scheduler interface.</description> <name>Yarn.resourcemanager.scheduler.address</name> <value>master:18030</value> </property> <property> <description>The address of the RM web application.</description> <name>Yarn.resourcemanager.webapp.address</name> <value>master:18088</value> </property> <property> <description>The address of the resource tracker interface.</description> <name>Yarn.resourcemanager.resource-tracker.address</name> <value>master:8025</value> </property> </configuration>
这里添加的一些端口号,方便从远程经过浏览器查看集群状况,推荐按照这样添加。
在 hadoop 解压路径下面,/etc/hadoop/slaves 增长下面内容:
master slave1
按照上面流程,把 slaver1上的环境变量添加好,而后直接:
scp -r /hadoop2.6.4 hadoop@slave1:/usr/
复制到 slave1下面。
启动 hadoop 集群:
格式化文件系统:
hdfs namenode -format
启动 NameNode 和 DateNode:
/usr/hadoop-2.6.4/sbin , 运行:
start-dfs.sh
使用 jps 命令查看 master 上的Java进程,个人进程以下:
jps 命令也能够查看 slave1上的 Java 进程。应该能够看到DataNode启动。如:
[hadoop@slave1 hadoop]# jps 6130 DataNode 1264 Jps
查看 NameNode 和 NameNode 信息:
master的浏览器输入:
localhost:50070/dfshealth.html#tab-datanode
能够看到DataNode启动成功。
运行 start-yarn.sh , jps查看进程以下:
切换到 slave1,jps查看进程:
[hadoop@slave1 hadoop]# jps 27130 DataNode 12379 Jps 28916 NodeManager
Hadoop 集群就已经启动了。
----------------------------------------------------------------------------------------------------------------------------------------
最后,参考文章:
配置sudoer权限、建立免密码登陆:http://blog.sina.com.cn/s/blog_95b63fc90102vrvy.html
修改hadoop配置文件、进程查看:http://blog.csdn.net/sa14023053/article/details/51952534