2019/01/03
利用实验室的服务器以及一台主机搭建一个全分布式hadoop雏形。
步骤
1.时间同步
2.修改主机名。
3.配置静态IP
4.添加hadoop用户
5.ssh免密登陆设置
6.安装配置JDK
7.安装Hadoop配置文件
- 时间同步(每个节点)
主节点和分节点之间,时间同步很重要。这里是通过控制时区来实现。- 用
date -R
查看当前系统时间
- 运行tzselect
依次选择Asia China Beijing - 复制文件到/etc下
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- 以上是修改时区,下面也可以手动修改日期时间
sudo date -s MM/DD/YY
sudo date -s hh:mm:ss
之后再修改硬件的时间(很重要的)
sudo hwclock --systohc
- 用
- 修改主机名(每个节点)
sudo vim /etc/hostname
直接修改,主节点就修改成master,分节点slave1(博主这次只用了两个节点)- 修改/etc/hosts文件,把节点名称、ip全部填进去,使节点间能够相互ping
sudo vim /etc/hosts
添加节点信息,且注释掉第二行。
- 重启系统生效
sudo reboot
- 静态IP设置(每个节点)
- 先分别用
ifconfig
和route -n
找到主机所拥有的IP、网卡接口、子网掩码和网关Gateway
- 修改文件
interface
vim /etc/network/interfaces
把除了第一行取消注释就行,相应位置添上自己主机的配置。之后执行sudo /etc/init.d/networking restart
重启网络。 - 但是之后会发现,只能ping通内网,还是出不去。是因为DNS问题。设置DNS据博主目前所知有3种方法:
1.sudo vim /etc/network/interfaces
,在最后加上dns-nameserver x.x.x.x
或者dns-nameservers x.x.x.x y.y.y.y
一般来说,域名8.8.8.8(Google)和223.5.5.5(阿里)就行
2.sudo vim /etc/systemd/resolved.conf
DNS后面加上需要的地址
重启。
3.sudo vim /etc/resolvconf/resolv.conf.d/head
在下面直接加上nameserverserver x.x.x.x
有两个就再加一行。之后sudo resolvconf -u
更新/etc/resolv.conf
。操作时候会发现/etc/resolvconf/resolv.conf.d/里面有另外一个文件base
,理论上这个和head
是一样的,只要修改一个就行。 - 此时静态IP设置完毕。
- 先分别用
- 添加Hadoop用户(每个节点)
- 为hadoop集群专门设置一个用户组及用户,设置hadoop用户组命令:
sudo groupadd hadoop
- 添加一个had_user用户,此用户属于hadoop用户组。
sudo useradd –s /bin/bash –d /home/had_user –m had_user –g hadoop
- 设置用户had_user登录密码
sudo passwd had_user
输入一次再次确认。 - 将had_user用户分配到sudo组下,使之拥有sudo命令权限。(不过似乎没有什么用)
sermod -G sudo had_user
- 切换到had_user用户中,之后的操作基本都是在该用户下进行
su had_user
cd ~
- 为hadoop集群专门设置一个用户组及用户,设置hadoop用户组命令:
- ssh免密设置(每个节点)
- 首先安装ssh
sudo apt-get install ssh
- 生成公钥、私钥(用rsa,不用dsa),这一步是每个节点均运行后才执行下面的操作。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub master
此步需输入hadoop用户密码
ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
此步需输入hadoop用户密码
chmod 0600 ~/.ssh/authorized_keys
- 此时,免密登陆已经完成,测试是否可以登陆连接
ssh slave1
以及ssh master
exit
退出。
- 首先安装ssh
- 安装配置JDK、Hadoop环境变量
- 先在
/home/hadoop/
下创建locol文件夹,里面存放下载好的jdk1.8.0包和hadoop3.1.1包。
修改其owner(had_user)和group(hadoop) - 解压
tar -zxvf jkd-8u181-linux-x64.tar.gz
- 解压
tar -zxvf hadoop-3.1.1.tar.gz
- 配置jdk,注意此时有两种方法可选,一是修改
/etc/profile
,这是全局的对所有用户有效。二是修改~/.bashrc
,这里面只针对had_user,而且hadoop的变量配置也在这里面。在。.bashrc
最后加上以下内容:
export JAVA_HOME=/home/had_user/local/jdk1.8.0_191 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export HADOOP_HOME=/home/had_user/local/hadoop-3.1.1 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc
,使配置生效。- CHECK一下:
java -version
hadoop version
- 先在
- 配置Hadoop
- 要修改的是
~/etc/hadoop/
里面的几个配置文件,其实具体配置可参考官方给出的:https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/ClusterSetup.html - 这里给出博主配置的内容:
vim workers
里面理论上只有一行localhost
我们在下面加上slave1就行。
vim core-
- 要修改的是