其他分享
首页 > 其他分享> > Hadoop完全分布式搭建,基于乌班图系统

Hadoop完全分布式搭建,基于乌班图系统

作者:互联网

因为现在集成的工具很多,建议在接触这一块的过程中还是自己找几个主机,亲手搭一遍集群,更好的熟悉底层!本文只是搭建的过程没有理论!手搭集群时先将各节点网络、ssh配置好!然后在一台机子上操作配置文件,直接分发到各节点!

一、乌班图网络设置
乌班图
给root用户设置密码
sudo passwd root

ubuntu 系统分配固定 ip
sudo vim /etc/network/interfaces
auto ens33
iface ens33 inet static
 #分配的 固定 ip 192.168.219是根据你的虚拟网卡来决定的,在第一步里面已经分配了
address 192.168.87.140
 #子网掩码 固定的
netmask 255.255.255.0
#网关 默认都是 x.x.x.1 但是 windows 下的 vm 可以自己设置,mac 上我没有找到
gateway 192.168.87.1
#dns 输入和网关一样的即可
dns-nameservers 114.114.114.114

重启网卡的指令
sudo /etc/init.d/networking restart
执行该命令时,可能出现的错误:
[....] Restarting networking (via systemctl): networking.serviceJob for networking.service failed because the control process 						exited with error code. See "systemctl status networking.service" and "journalctl -xe" for details.
failed!
后来发现出现这个错误的原因,是因为Ubuntu16.04中的网卡名称不是eth0。

如果乌班图连不上网络,设置如下
打开sudo vi /etc/resolvconf/resolv.conf.d/base,默认是空的

在这里插入图片描述

编辑完成保存之后执行sudo /sbin/resolvconf -u
查看/etc/resolv.conf文件 cat /etc/resolv.conf内容已经加上
重启ubuntu,可以ping通百度

二、
安装yum
首先检测是否安装了build-essential程序包 apt-get install build-essential
安装yum apt-get install yum

安装vim
输入sudo apt-get install vim,下载安装vim

配置ssh
打开"终端窗口",输入"sudo apt-get install openssh-server"-->回车-->输入"y"-->回车-->安装完成。

查看ssh服务是否启动
打开"终端窗口",输入"sudo ps -e |grep ssh"-->回车-->有sshd,说明ssh服务已经启动,如果没有启动,输入"sudo service ssh 		start"-->回车-->ssh服务就会启动。

使用gedit修改配置文件"/etc/ssh/sshd_config"
(可以不做修改!修改的目的是允许root远程连接,不修改可以用普通用户连接)
打开"终端窗口",输入"sudo gedit /etc/ssh/sshd_config"-->回车-->把配置文件中的"PermitRootLogin without-password"加一个"#"号,把它注释掉-->再增加一句"PermitRootLogin yes"-->保存,修改成功。

配置ssh和其他节点的免密通信
(1)生成密钥 	ssh-keygen -t rsa
(2)将密码传到另一个节点	ssh -copy -id 主机名
(3)测试	ssh	主机名
(4)如果在复制密钥时报错  WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
(5)执行   rm -rf ~/.ssh		删除密钥,重新复制

三、Ubuntu下更改各节点用户名和主机名

1、修改hostname
	Vim /etc/hostname
2、修改hosts文件
	Vim /etc/hosts(主机名映射)

关闭防火墙
Sudo ufw status 在Ubuntu中 我们使用sudo ufw status命令查看当前防火墙状态;inactive状态是防火墙关闭状态 active是开启状态。
开启防火墙
  在Ubuntu中 我们使用sudo ufw enable命令来开发防火墙 通过sudo ufw status命令查看开启防火墙后的状态为active 说明防火墙开启成功
关闭防火墙
 在Ubuntu中 我们使用sudo wfw disable命令来关闭防火墙。执行该命令之后 我们使用sudo ufw status命令来查看当前防火墙的状态 如果是inactive 说明我们的防火墙已经关闭掉了。

如果突然发现ping不通	
Destination host Unreachable(无法访问目标主机)
  (1) 对方与自己不在同一网段内,而自己又未设置默认的路由,比如上例中A机中不设定默认的路由,运行Ping 192.168.0.1.4就会出现“Destination host Unreachable”。
  (2)网线出了故障(一般换个网口)
  这里要说明一下“destination host unreachable”和 “time out”的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其他原因不可到达,这时候会出现“time out”,如果路由表中连到达目标的路由都没有,那就会出现“destination host unreachable”。

下载时报错:
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
查了很多资料,提示也很清楚,原因可能是上次我直接在VM切断的电源导致资源一直被占用未被释放,所以还是要注意要规范操作,养成好的习惯,就算是虚拟机也该如此。
解决办法:我采用的是直接杀死占用进程。
命令如下:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

四、安装jdk

解压到自定义路径,配置环境变量,并分发到其他节点
export JAVA_HOME=/opt/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

五、配置Hadoop并分发到其他节点

各文件的具体配置可以看官网
core-site.xml
hadoop-env.sh
hdfs-site.xml
注意:各配置文件的主机名还有下方此属性tong为用户名
<property>
 <name>dfs.ha.fencing.ssh.private-key-files</name>
 <value>/home/tong/.ssh/id_rsa</value>
</property>

mapred-site.xml
slaves	直接添加对应的主机名即可
yarn-site.xml
记得配置环境变量 

六、配置zookeeper

0、对各个节点配置时间同步
下载ntp
sudo  crontab -e
输入内容  */ * * * * /usr/sbin/ntpdate hadoop1
查看时间同步列表
sudo crontab -l
1、zk服务器集群规模不小于3个节点,节点数必须是奇数
2、要求各服务之间系统时间要保持一致
3、将zk压缩包移动到指定目录下,在Linux下解压
4、配置环境变量 完成后记得 source /etc/profile (重启环境变量)
5、重命名:将zk目录下zoo_sample.cfg,重命名为zoo.cfg,执行命令:mv zoo_sample.cfg zoo.cfg
6、查看:在zk/conf目录下,修改文件 vi zoo.cfg,在该文件中dataDir表示文件存放目录,它的默认设置为/tmp/zookeeper这是一个临时存放目录,每 次重启后会丢失,在这我们自己设一个目录,/usr/local/zk/data。
7、在dataDir设置的路径下创建相同的目录
8、在dataDir设置的目录路径下创建myid 
把hadoop0中相应的myid的值改为0,把hadoop1中相应的myid的值改为1,
把hadoop2中相应的myid的值改为2
9、在zoo.cfg下添加
server.0=hadoop:2888:3888
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
10、将此节点的所有配置信息全部复制到其他节点
11、在三个节点上分别执行命令zkServer.sh start 
再次输入jps,查看有无zk的进程
12、在三个节点上分别执行命令zkServer.sh status,从下面的图中我们会发现hadoop和hadoop1为Follower,hadoop0为Leader。
13、到此配置完毕

七、关键的时候到了,一般按流程只需要格式化一次就可以,如果集群启动报错,就再格式化一遍!还是报错请检查各个环节是否有问题

Hdfs配置ha
1、启动三个服务器上的zookeeper服务  命令 zkServer.sh start,启动HDFS 
2、在配置zookeeper的各个journalnode节点启动该进程
hadoop-daemon.sh start journalnode
3、删除所有节点hadoop_data下的所有文件
4、必须在第一个namenode节点上进行格式化,再复制到第二个namenode节点,目的是为了保持id一致
hadoop namenode -format
5、在namenode节点(hadoop1、hadoop2)格式化zkfc
hdfs zkfc -formatZK			(注意:这里的ZK是大写,大写,大写)
6、启动dfs
7、查看节点状态:hdfs haadmin -getServiceState NN1
8、输入IP地址:50070 查看当前两个namenode的状态,测试是否可以实现主备切换

Yarn配置ha
1、在主节点配置hadoop下的yarn-site.xml,并分发到其他子节点
配置时注意,namenode和yarn不要配置到同一台节点上
2、启动yarn服务:start-yarn.sh
3、或单独启动yarn服务
yarn-daemon.sh start resourcemanager

4、启动mapreduce历史服务器
mr-jobhistory-daemon.sh start historyserver

注意:如果提示某个文件不能删除,查看该文件的所有者,并修改

不能正常启动时多用tail -f 命令查看日志

标签:配置,乌班图,sudo,Hadoop,防火墙,etc,ssh,节点,分布式
来源: https://blog.csdn.net/weixin_43334140/article/details/100552314