hadoop伪分布式集群(单节点与多节点)配置
1.三个节点的结构
节点类型 |
IP地址 |
主机名 |
后台 |
主节点 |
192.168.80.11 |
master |
NameNode,ResourceManager,SecondaryNameNode |
从节点 |
192.168.80.12 |
Slave1 |
DataNode,NodeManager |
从节点 |
192.168.80.13 |
Slave2 |
DataNode,NodeManager |
2.单节点的结构
节点类型 |
IP地址 |
主机名 |
后台 |
主节点 |
192.168.80.11 |
Single |
NameNode,ResourceManager, DataNode,NodeManager , SecondaryNameNode |
注意:多节点配置的前提是不同主机名字,相同用户名。
开机模式的设置
1. centos6
要想修改Linux开机的启动模式(控制台或图形界面等),只需修改/etc/inittab文件。
/etc/inittab文件(部分):
# Default runlevel. The runlevels used byRHS are:
# 0- halt (Do NOT set initdefault to this)
# 1- Single user mode
# 2- Multiuser, without NFS (The same as 3, if you do not have networking)
# 3- Full multiuser mode
# 4- unused
# 5- X11
# 6- reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
要想修改启动级别,将“id:5:initdefault:”这一行的"id:"后的数字(默认为5)改为你要的级别即可。
注意:不要改为0,0表示关机;也不要改为6,否则开机就不停的重启了~三台虚拟机的JDK
2. centos7
centos仍然只有两种启动模式
multi-user.target: analogous to runlevel3 #命令行模式
graphical.target: analogous to runlevel5 #图形模式
systemctl set-default graphical.target 命令,修改启动模式为模式
同理命令行模式也是如此设置,只不过参数不一致。
一.三台虚拟机的JDK
1.在用户的跟目录创建app和appdata文件夹。
2.在hadoop用户的根目录,Jdk解压,(hadoop用户操作)
tar -zxvf jdk-8u65-linux-x64.tar.gz –C app/
解压完成后,在hadoop用户的根目录有一个jdk1.8.0_65目录
3.配置环境变量,需要修改/etc/profile文件(root用户操作)
切到root用户,输入su命令
vi /etc/profile 进去编辑器后,输入i,进入vi编辑器的插入模式在profile文件最后添加
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_65
export PATH=$JAVA_HOME/bin:$PATH
exportCLASSPATH=.:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
编辑完成后,按下esc退出插入模式
输入:,这时在左下角有一个冒号的标识
q 退出不保存
wq 保存退出
q! 强制退出
4.把修改的环境变量生效(hadoop用户操作)
执行source /etc/profile
注意:
.bash_profile在/home/用户名/
http://jingyan.baidu.com/article/0964eca26917b18285f53616.html
二.配置三台机器的主机名和IP地址
vi /etc/sysconfig/network
设置开机启动联网,onboot=yes,否则不能用ssh
vi/etc/sysconfig/network-scripts/ifcfg-eth0
将网络设置成桥接模式,否则不能用ssh
三.配置三台机器的hosts文件
vi /etc/hosts
内容:
192.168.44.11 master
192.168.44.12 slave1
192.168.44.13 slave2
可以修改master的hosts文件,然后复制到另外了两个机器上:
scp /etc/hosts slave1:/etc/hosts
scp /etc/hosts slave2:/etc/hosts
四.在主节点配置Hadoop
1.在hadoop用户的根目录,解压(hadoop用户操作)
tar -zxvf hadoop-2.6.0.tar.gz –C ./app
解压完成在hadoop用户的根目录下有一个hadoop-2.6.0目录
2.修改配置文件hadoop-2.6.0/etc/hadoop/hadoop-env.sh(hadoop用户操作)
exportJAVA_HOME=/home/hadoop/app/jdk1.8.0_65
3.修改配置文件hadoop-2.6.0/etc/hadoop/core-site.xml,添加(hadoop用户操作)
<property> <name>fs.defaultFS</name> <value>hdfs://node1:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/appdata/hadoop/tmp</value> <description>Abasefor other temporary directories.</description> </property> |
4. 修改配置文件hadoop-2.6.0/etc/hadoop/hdfs-site.xml,添加(hadoop用户操作)
<property> <name>dfs.namenode.secondary.http-address</name> <value>node1:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/appdata/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/appdata/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property>
|
5.修改修改配置文件hadoop-2.6.0/etc/hadoop/mapred-site.xml(hadoop用户操作)
这个文件没有,需要复制一份
cp etc/hadoop/mapred-site.xml.templateetc/hadoop/mapred-site.xml
添加
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>node1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node1:19888</value> </property>
|
6.修改配置文件hadoop-2.6.0/etc/hadoop/yarn-site.xml,添加(hadoop用户操作)
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>node1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>node1:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>node1:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>node1:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>node1:8088</value> </property>
|
7.修改配置文件hadoop-2.6.0/etc/hadoop/slaves,添加(hadoop用户操作)
slave1
slave2
五.把Hadoop复制到其他两个节点
scp –r app/hadoop-2.6.0 slave1:~/app/
scp –r app/hadoop-2.6.0 slave2:~/app/
六.配置SSH互信
多节点的互信配置
1. 生成公钥和私钥
在命令行执行ssh-******,然后回车,然后会提示输入内容,什么都不用写,一路回车
在hadoop用户根目录下,有一个.ssh目录
id_rsa 私钥
id_rsa.pub 公钥
known_hosts 通过SSH链接到本主机,都会在这里有记录
2. 把公钥给信任的主机(本机)
在命令行输入ssh-copy-id 主机名称
ssh-copy-id hadoop
复制的过程中需要输入信任主机的密码
3. 验证,在命令行输入:ssh信任主机名称
ssh hadoop
如果没有提示输入密码,则配置成功
node1和slave1互相配置互信
node1和slave2互相配置互信
本地(单节点)互信的配置
1. ssh-******-t dsa -P '' -f ~/.ssh/id_dsa
2. 2.cat~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (root用户操作)
这两步可以实现,本地 ssh localhost配置
七.集群格式化及启动
bin/hdfs namenode –format
格式化只能操作一次并且在主节点格式化,如果需要再次格式化,需要把appdata/hadoop目录清空
sbin/start-all.sh
启动之后,输入jps查看启动的节点服务是否全部开启。
NameNode、ResourceManager、DataNode、NodeManager和SecondaryNameNode。
中间会出现几个节点启动不了,此时可以尝试一下sbin/stop-all.sh关闭服务,重新启动一下,如果上面的服务全部启动则进行测试,否则查看日志进行改错。
注意:hadoop namenode -recover 解决java.io.IOException:There appears to be a gap in the edit log. We expected txid 1, but got txid 73.
八.测试
把一个文件放入HDFS,如果没有报错,则成功
hadoop端口号50070
注意:防火墙必须关闭,否则访问不了50070这个端口。为了防止下次开机不会出现这种情况,这里将防火墙设置为开机不会启动。
1.centos 6
把三台虚拟机的防火墙关闭:sudo service iptables stop
2.centos 7