发布时间: 2018-01-03 21:59:34
本集群搭建案例,以5节点为例进行搭建,角色分配如下:
hdp-node-01 NameNode SecondaryNameNode
hdp-node-02 ResourceManager
hdp-node-03 DataNode NodeManager
hdp-node-04 DataNode NodeManager
hdp-node-05 DataNode NodeManager
部署图如下:
1. 服务器准备本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:
12.0.0
redhat 6.5 64bit
2. 网络环境准备
采用NAT方式联网
网关地址:192.168.195.2
3个服务器节点IP地址:192.168.195.128、192.168.195.129、192.168.195.130
子网掩码:255.255.255.0
3.服务器系统设置
添加HADOOP用户
为HADOOP用户分配sudoer权限
同步时间
设置主机名
hdp-node-01
hdp-node-02
hdp-node-03
配置内网域名映射:
192.168.195.128 hdp-node-01
192.168.195.129 hdp-node-02
192.168.195.129 hdp-node-03
配置ssh免密登陆
配置防火墙
4.准备Linux环境
以下是将ip地址改成静态的ip地址,如果用动态ip地址,以下操作可以不用做:
4.1:先将虚拟机的网络模式选为NAT
4.2: 修改主机名(要用root)
[root@hdp-node-01 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hdp-node-01
保存,然后重启机器
[root@hdp-node-01 ~]# reboot
4.3: 修改IP,两种方式:
第一种:通过Linux图形界面进行修改(强烈推荐)
A、先在动态的ip地址状态下查询ip
B、进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 ->
添加IP:192.168.195.128 子网掩码:255.255.255.0 网关:192.168.192.2 DNS:144.144.144.144-> apply
第二种:修改配置文件方式
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=d0bae0f5-ea26-4844-b6e2-1c24945914ec
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.195.128
PREFIX=32
GATEWAY=192.168.195.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=00:0C:29:DC:BA:3E
LAST_CONNECT=1509437953
4.4: 修改主机名和IP的映射关系
vim /etc/hosts
192.168.195.128 hdp-node-01
4.5:关闭防火墙
#查看防火墙状态
service iptables status
#关闭防火墙
service iptables stop
#查看防火墙开机启动状态
chkconfig iptables --list
#关闭防火墙开机启动
chkconfig iptables off
或者修改防火墙的访问规则
[root@hdp-node-01 ~]# vim /etc/sysconfig/iptables
在该文件中加上
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
重启防火墙
[root@hdp-node-01 ~]#service iptables restart
5:安装JDK
(1) 上传jdk安装包,规划安装目录 /opt/jdk1.8.0_121
(2) 解压安装包
[root@hdp-node-01 opt]# tar -zxvf jdk-8u121-linux-x64.gz –C /opt
(3) 配置环境变量 /etc/profile
vim /etc/profile
#在文件对应的位置添加
JAVA_HOME=/opt/jdk1.8.0_121
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
#刷新配置
source /etc/profile
6:安转hadoop-2.8.1
先上传hadoop的安装包到服务器上去/home/hadoop/apps
解压hadoop
[hadoop@hdp-node-01 apps]$ tar zxvf hadoop-2.8.1.tar.gz
注意:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop
伪分布式需要修改5个配置文件 6.1:配置hadoop
第一个:hadoop-env.sh
vim hadoop-env.sh
# The java implementation to use. export JAVA_HOME=/opt/jdk1.8.0_121
第二个:core-site.xml
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdp-node-01:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/apps/hadoop-2.8.1/tmp</value>
</property>
</configuration>
第三个:hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hdp-node-01:50090</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
</configuration>
注意:需要先创建/home/hadoop/data/name和/home/hadoop/data/data两个目录
[hadoop@hdp-node-01 ~]$ mkdir -p ~/data/name
[hadoop@hdp-node-01 ~]$ mkdir -p ~/data/data
第四个:mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
第五个:yarn-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp-node-01</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
第六个:vi slaves
hdp-node-02
hdp-node-03
6.2: 将hadoop添加到环境变量
vim /etc/profile
HADOOP_HOME=/home/hadoop/apps/hadoop-2.8.1JAVA_HOME=/opt/jdk1.8.0_121
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
source /etc/profile
6.3:格式化namenode(是对namenode进行初始化)
hdfs namenode -format
6.4:配置datanode将上面配置好的hadoop-2.8.1拷贝到hdp-node-02和hdp-node-03机器
[hadoop@hdp-node-01 apps]$ scp -r hadoop-2.8.1 hadoop@hdp-node-02:/home/hadoop/apps
注意:在hdp-node-02机器中/home/hadoop目录,要先创建apps
6.5:启动hadoop 先启动HDFS
sbin/start-dfs.sh
再启动YARN
sbin/start-yarn.sh
6.6:验证是否启动成功 使用jps命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
http://192.168.195.128:50070 (HDFS管理界面)
7:配置ssh免登陆
以下操作只需要在namenode机器中配置即可
A、用root用户登录修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。
检查下面几行前面”#”注释是否取消掉:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile %h/.ssh/authorized_keys # 公钥文件路径
然后重启sshd服务
[root@hdp-node-04 .ssh]# service sshd restart
B、生成ssh免登陆密钥
#进入到我的home目录
[hadoop@hdp-node-01 hadoop]$ cd ~/.ssh
[hadoop@hdp-node-01 .ssh]$ ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登陆的目标机器上
[hadoop@hdp-node-01 .ssh]$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
[hadoop@hdp-node-01 .ssh]$ ssh-copy-id hadoop@hdp-node-01
[hadoop@hdp-node-01 .ssh]$ssh-copy-id hadoop@hdp-node-02
[hadoop@hdp-node-01 .ssh]$ssh-copy-id hadoop@hdp-node-03
[hadoop@hdp-node-01 .ssh]$ssh hadoop@hdp-node-02
与本机完成免密登录,将authorized_keys权限改成600
---------------------------
ssh免登陆:
生成key:
---------------------------
ssh免登陆:
生成key:
ssh-keygen
复制从A复制到B上:
ssh-copy-id B
验证:
ssh localhost/exit,ps -e|grep ssh
ssh A #在B中执行
8:测试:
1、查看集群状态命令:
hdfs dfsadmin -report
2、上传文件到HDFS从本地上传一个文本文件到hdfs的/wordcount/input目录下
[HADOOP@hdp-node-01 ~]$ HADOOP fs -mkdir -p /wordcount/input
[HADOOP@hdp-node-01 ~]$ HADOOP fs -put /home/HADOOP/somewords.txt /wordcount/input
上一篇: {大数据}HDFS详解
下一篇: {大数据}Zookeeper简介