1.0 先将虚拟机的网络模式选为NAT
1.1 修改主机名
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=had ###
1.2 修改IP
两种方式:
第一种:通过Linux图形界面进行修改
进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System
eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 ->
添加IP:192.168.1.101 子网掩码:255.255.255.0 网关:192.168.1.1 -> apply
第二种:修改配置文件方式(屌丝程序猿专用)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static" ###
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.1.101" ###
NETMASK="255.255.255.0" ###
GATEWAY="192.168.1.1" ###
1.3 修改主机名和IP的映射关系
vim /etc/hosts
192.166.100.11 had1
192.166.100.12 had2
192.166.100.13 had3
192.166.100.14 had4
1.4 关闭防火墙【systemctl stop firewalld.service
】
#查看防火墙状态 service iptables status
#关闭防火墙 service iptables stop
#查看防火墙开机启动状态 chkconfig iptables –list
#关闭防火墙开机启动 chkconfig iptables off
1.5 新建用户
useradd had
passwd had
had
had
1.6 修改sudo(给had用户添加执行的权限)
su root
vi /etc/sudoers
给hadoop用户添加执行的权限
配置添加:
had ALL=(ALL) ALL
拷贝到其他服务器:
scp /etc/sudoers 192.168.100.12:/etc
scp /etc/sudoers 192.168.100.13:/etc
scp /etc/sudoers 192.168.100.14:/etc
1.7 关闭linux服务器的图形界面:
vi /etc/inittab
1.8 重启Linux
reboot
2.1 上传alt+p 后出现sftp窗口,然后put d:\xxx\yy\ll\jdk-7u_65-i585.tar.gz
put E:soft\jdk-7u45-linux-x64.tar.gz
mv /root/jdk-7u45-linux-x64.tar.gz /usr/src
2.2 搭建JDK环境(多台服务器)
#创建文件夹
mkdir /home/had/app
#解压
tar -zxvf /usr/src/jdk-7u45-linux-x64.tar.gz -C /home/had/app
#将java添加到环境变量中
vi /etc/profile
#在文件最后添加
export JAVA_HOME=/home/had/app/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin
#拷贝环境变量到其他服务器
sudo scp /etc/profile 192.168.100.12:/etc
sudo scp /etc/profile 192.168.100.13:/etc
sudo scp /etc/profile 192.168.100.14:/etc
#刷新配置
source /etc/profile
3.1 先上传hadoop的安装包到服务器上去/home/hadoop/
注意:-bash: rz: command not found
安装lrzsz:
# yum -y install lrzsz
现在就可以正常使用rz、sz命令上传、下载数据了。
使用方法:
上传文件
# rz filename
下载文件
# sz filename
注意:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop
3.2 解压到app文件
tar -zxvf cenos-6.5-hadoop-2.6.4.tar.gz -C app/
3.3配置hadoop
伪分布式需要修改5个配置文件
第一个:hadoop-env.sh
vi hadoop-env.sh
#第27行
export JAVA_HOME=/home/had/app/jdk1.7.0_45
第二个:core-site.xml
vi core-site.xml
<property>
<name>fs.defaultFSname>
<value>hdfs://192.168.100.11:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/home/had/tmp/hapdatavalue>
property>
第三个:hdfs-site.xml
<property>
<name>dfs.replicationname>
<value>2value>
property>
<property>
<name>dfs.secondary.http.addressname>
<value>192.168.1.152:50090value>
property>
第四个:mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
第五个:yarn-site.xml
<property>
<name>yarn.resourcemanager.hostnamename>
<value>192.168.100.11value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
3.3 将hadoop添加到环境变量
sudo vi /etc/proflie
export JAVA_HOME=/home/had/app/jdk1.7.0_45
export HADOOP_HOME=/home/had/app/hadoop-2.6.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
3.4 拷贝hadoop和环境变量到其他服务器
scp -r /home/had/app 192.168.100.12:/home/had/
scp -r /home/had/app 192.168.100.13:/home/had/
scp -r /home/had/app 192.168.100.14:/home/had/
scp -r /etc/profile 192.168.100.12:/etc/
scp -r /etc/profile 192.168.100.13:/etc/
scp -r /etc/profile 192.168.100.14:/etc/
source /etc/profile
3.3 格式化namenode(是对namenode进行初始化)
hdfs namenode -format (hadoop namenode -format)
3.4 启动hadoop
先启动HDFS
sbin/start-dfs.sh
再启动YARN
sbin/start-yarn.sh
批量启动/关闭:【验证:不填入ip地址,填入hosts主机的host名,ip测试不能通过】
cd /home/had/app/hadoop-2.6.4/etc/hadoop/
vi slaves
had2
had3
had4
start-dfs.sh/stop-dfs.sh
start-yarn.sh/stop-yarn.sh
3.5验证是否启动成功
使用jps
命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
http://192.168.100.11:50070/dfshealth.html (HDFS管理界面)
http://192.168.100.11:8088 (MR管理界面)
4.1 配置所有各自服务器本身公钥和免密
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
现在每台节点本身实现免密
4.2 将除A服务器之外所有节点的公钥复制到A上,这里是将hadoop2,hadoop3的公钥拷贝到A的authorized_keys,目的是实现hadoop2,hadoop3登录A实现免密,而反过来不行
ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.100.11 # 在hadoop2上执行
ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.100.11 # 在hadoop3上执行
...
4.3 实现最终集群所有节点互相免密
现在hadoop1(A)保存了所有节点的公钥,那么这个时候应该分发hadoop1上的authorized_keys到其他节点
scp ~/.ssh/authorized_keys 192.168.100.12:~/.ssh/
scp ~/.ssh/authorized_keys 192.168.100.13:~/.ssh/