2022-05-26 原创
1.1.1. Hadoop完全分布式
1.1.1.1. 网络配置(所有节点都要配置)
1)修改当前机器名
[root@hadoop ~]#vi /etc/sysconfig/network
2)更改机器名称后,需要重启Linux系统。
[root@hadoop ~]# reboot
3)关闭防火墙
[root@master ~]# service iptables stop
[root@master ~]# chkconfig iptables off
[root@master ~]# chkconfig --list iptables
iptables 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
4)修改当前机器IP
[root@master ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
5)配置hosts文件
[root@master ~]#vi /etc/hosts
6)重启网络
[root@master ~]# /etc/init.d/network resatrt
7)创建一个普通用户
[root@master ~]# useradd hadoop
[root@master ~]# passwd hadoop
1.1.1.2. SSH无密码验证配置
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。
1)安装和启动SSH协议(所有节点)
我们需要两个服务:ssh和rsync已经安装了。可以通过下面命令查看结果
[root@master ~]# rpm -qa | grep openssh
[root@master ~]# rpm -qa | grep rsync
假设没有安装ssh和rsync,可以通过下面命令进行安装。
[root@master ~]# yum install openssh* -y
[root@master ~]# yum install rsync -y
2)切换到hadoop用户
[root@master ~]# su - hadoop
3)每个节点生成秘钥对(所有节点)
4)查看"/home/hadoop/“下是否有”.ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对(所有节点)
[hadoop@master ~]$ ls ~/.ssh
5)把id_rsa.pub追加到授权的key里面去(所有节点)
[hadoop@master ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
6)修改文件"authorized_keys" 权限(所有节点)
[hadoop@master ~]$ chmod 600 ~/.ssh/authorized_keys
7)设置SSH配置 (所有节点)
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
[hadoop@master ~]$ su - root
[root@master ~]# vi /etc/ssh/sshd_config
8)设置完之后记得重启SSH服务,才能使刚才设置有效。(所有节点)
[root@master ~]# /etc/init.d/sshd restart
使用systemctl restart sshd代替
9)切换到hadoop用户
[root@master ~]# su - hadoop
10)验证是否成功(所有节点)
[hadoop@master ~]$ ssh localhost
11)把master节点的公钥id_rsa_pub复制到每个slave点
[hadoop@master ~]$ scp ~/.ssh/id_rsa.pub hadoop@192.168.150.82:~/
12)在每个slave节点把master节点复制的公钥复制到authorized_keys文件(所有slave节点)
[hadoop@slave1 ~]$ cat ~/id_rsa.pub >>~/.ssh/authorized_keys
13)删除id_rsa.pub文件(所有slave节点)
[hadoop@master ~]$ rm -f ~/id_rsa.pub(所有slave节点)
14)验证master到每个slave节点无密码验证(master节点)
[hadoop@master ~]$ ssh 192.168.150.82
[hadoop@master ~]$ ssh 192.168.150.83
[hadoop@master ~]$ ssh 192.168.150.84
15)每一个slave节点的公钥复制到master(15、16、17步骤为一组在每个slave上执行)
[hadoop@slave1 ~]$ scp ~/.ssh/id_rsa.pub hadoop@192.168.150.81:~/
16)在master节点把从slave节点复制的公钥复制到authorized_keys文件(master节点)
[hadoop@master ~]$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
17)删除id_rsa.pub文件(master节点)
[hadoop@master ~]$ rm -f ~/id_rsa.pub
18)验证每个slave节点到master无密码验证(slave节点)
Slave1节点
[hadoop@slave1 ~]$ ssh 192.168.150.81
Slave2节点
Slave3节点
1.1.1.3. Java环境安装(所有节点都要配置)
1)切换到root用户
[hadoop@master ~]$ su - root
2)新建java目录
[root@master ~]# mkdir /usr/java
3)解压到/usr/java目录下
[root@master staging]# tar zxvf jdk-8u77-linux-i586.tar.gz -C /usr/java/
4)配置环境变量
[root@master staging]# vi /etc/profile #末尾添加
#set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_77
export JRE_HOME=/usr/java/jdk1.8.0_77/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
5)使添加的环境变量生效
[root@master staging]# source /etc/profile
6)验证安装成功
[root@master staging]#java -version
1.1.1.4. 在Master节点上安装hadoop
1)解压缩到/usr目录下
[root@master staging]# tar zxvf hadoop-2.6.0.tar.gz -C /usr/
2)重命名
[root@master staging]# mv /usr/hadoop-2.6.0 /usr/hadoop
3)配置hadoop环境变量
[root@master staging]# cd
[root@master ~]# vi /etc/profile #文件末尾添加
#set hadoop environment
export HADOOP_HOME=/usr/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
4)使配置的hadoop的环境变量生效
[root@master ~]#source /etc/profile
5)配置hadoop-env.sh
[root@master ~]# cd /usr/hadoop/etc/hadoop/
[root@master hadoop]# vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_144
6)配置core-site.xml
[root@master hadoop]# vi core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.150.81:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/tmp</value>
</property>
备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。
7)配置hdfs-site.xml
[root@master hadoop]# vi hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.namenode.data.dir</name>
<value>file:/usr/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
修改Hadoop中HDFS的配置,配置的备份方式默认为3
8)配置yarn-site.xml
[root@master hadoop]# vi yarn-site.xml
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<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>
9)配置mapred-site.xml
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@master hadoop]# vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
10)配置masters文件
[root@master hadoop]# vi masters #加入以下内容
11)配置slaves文件
[root@master hadoop]# vi slaves #删除localhost,加入以下内容
至此 配置文件基本配置完毕。
12)新建目录
[root@master hadoop]# mkdir /usr/hadoop/tmp
[root@master hadoop]# mkdir /usr/hadoop/dfs/name -p
[root@master hadoop]# mkdir /usr/hadoop/dfs/data -p
13)修改/usr/hadoop目录的权限
[root@master hadoop]# chown -R hadoop:hadoop /usr/hadoop/
14)将master上的hadoop安装文件同步到slave1 slave2 slave3
[root@master hadoop]#cd
[root@master ~]# scp -r /usr/hadoop/ root@slave1:/usr/
[root@master ~]# scp -r /usr/hadoop/ root@slave2:/usr/
[root@master ~]# scp -r /usr/hadoop/ root@slave3:/usr/
15)在每个slave节点上配置hadoop的环境变量(所有slave节点)
[root@slave1~]# vi /etc/profile #文件末尾添加
#set hadoop environment
export HADOOP_HOME=/usr/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
16)使配置的hadoop的环境变量生效(所有slave节点)
[root@slave1~]# source /etc/profile
17)修改/usr/hadoop目录的权限(所有slave节点)
[root@slave1~]# chown -R hadoop:hadoop /usr/hadoop/
18)切换到hadoop用户(所有slave节点)
[root@slave1 ~]#su - hadoop
1.1.1.5. 测试
1)切换到hadoop(master节点)
[root@master ~]# su - hadoop
2)先格式化(master节点)
[hadoop@master ~]$ hadoop namenode -format
3)启动hadoop(master节点)
[hadoop@master ~]$ start-all.sh
4)查看Java进程
master节点
[hadoop@master ~]$ jps
Slave1节点
[hadoop@slave1~]$ jps
Slave2节点
[hadoop@slave1~]$ jps
Slave3节点
[hadoop@slave1~]$ jps
5)使用浏览器浏览Master节点机http://192.168.150.81:50070,查看NameNode节点状态
6)浏览Datanode数据节点
7)使用浏览器浏览Master节点http://192.168.150.81:8088查看所有应用
8)浏览Nodes
9)关闭hadoop
帮助很大