从零学习大数据(1)_hadoop基础环境搭建

hadoop基础环境搭建

关于博客
由于平常在做java开发及ETL,对大数据方向有了写兴趣,所以想学习学习,将学习过程笔记及心得写在博客中,用来共享,希望有所帮助

基础环境搭建步骤

1.配置阿里云yum源
2.安装常用软件
3.关闭防火墙
4.关闭selinux
5.安装JDK
6.创建hadoop用户并配置hadoop用户密码
7.给hadoop用户配置ssh秘钥
8.创建whell用户组,禁止非whell组用户切换到root,配置免密切换root
9.配置hosts文件
10.克隆4台机器
10.1.虚拟机克隆
10.1.1.配置静态IP
10.1.2 配置、etc/resolv.conf 的 nameserver
10.1.3 停掉NetworkManager服务
11.修改每个机器的 主机名
12.scp命令和ssh命令说明及使用
13.批量脚本说明及使用

集群部署规划
5台服务器
一个主节点:nn1.hadoop
一个从节点:nn2.hadoop
三个工作节点:s1.hadoop
s2.hadoop
s3.hadoop
1.安装rz用来上传文件
yum install -y lrzsz
在这里插入图片描述
安装阿里云源:
地址:http://mirrors.aliyun.com/repo/Centos-7.repo
上传这个repo
备份并替换系统的repo文件

#拷贝
cp Cntos-7.repo /etc/yum.repos.d/
cd /etc/yum.repos.d/
#备份
mv CentOS-Base.repo CentOS-Base.repo.bak
#替换
mv Centos-7.repo Centos-Base.repo

执行yum源更新命令

yum clean all
yum makecache
yum update -y

配置完毕
2.安装常用软件

yum install -y openssh-server vim gcc gcc-c++ glibc-headers bzip2-devel lzo-devel lzo-devel curl wget openssh-clients zlib-devel autoconf autoconf automake cmake libtool openssl-devel fuse-devel snappy-devel telnet unzip zip net-tools.x86_64 firewalld systemd

3.关闭防火墙
centos6:

#查看防火墙状态:
service iptables status
#关闭防火墙:
service iptables stop 
#永久关闭防火墙:
chkconfig iptables off 

centos7:

#查看防火墙状态:
firewall-cmd --state
#关闭防火墙:
systemctl stop firewalld.service
#禁止防火墙开机启动:
systemctl disable firewalld.service
#查看服务是否开机启动:
systemctl is-enabled firewalld.service

4.关闭selinux

#查看状态:
/usr/sbin/sestatus -v

在这里插入图片描述

#关闭:
vim /etc/selinux/config 

把文件中的selinux=disabled

#重启服务器
reboot

启动之后

#查看状态
/usr/sbin/sestatus -v 

在这里插入图片描述

5.安装JDK
我的jdk版本为1.8 安装步骤略,度娘很多,这里偷个懒
修改主机名
centos 6:
vi /etc/sysconfig/network
HOSTNAME=nn1.hadoop #修改localhost.localdomain为nn1.hadoop

vi /etc/hosts
127.0.0.1 nn1.hadoop localhost #修改localhost.localdomain为nn1.hadoop

ps:可以不改127.0.0.1后面的默认主机名。改了的话可能会有某些网络应用误把主机master解析到127.0.0.1上去,导致运行失败,当然可能性比较低。可以在对本机设置IP后,在/etc/hosts的最后加一行: “IP 主机名”,这样也可以实现。

shutdown -r now #重启服务器

centos 7:

#修改
hostnamectl set-hostname nn1.hadoop
#修改之后查看
hostname

6.创建hadoop用户,设置用户密码
创建用户
useradd hadoop
设置密码
passwd hadoop
7.给hadoop用户创建秘钥
配置ssh秘钥目的:使得多台机器之间可以免密登录
实现原理:使用ssh-keygen 在linux1上生成公钥和私钥,将公钥复制到另一台linux2上,则可以实现使用ssh命令无需密码登录到另一台服务器上,如果需要互相免密登录,需要将公钥私钥都拷贝到linux2上。

#切换到hadoop用户
su - hadoop
#创建.ssh目录
mkdir ~/.ssh
#生成ssh公钥私钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
#输出公钥文件内容并且重新输入到~/ssh/authorized_keys文件中
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
#给~/.ssh文件加上700权限
chmod 700 ~/.ssh
#给~/.ssh/authorized_keys加上 600权限
chmod 600 ~/.ssh/authorized_keys

8.创建whell用户组,禁止非whell组用户切换到root,配置免密切换root(非必须)
1)修改 /etc/pam.d/su 配置
su时 要求用户加入到wheel组
将此行 井号’#’ 去掉
在这里插入图片描述

或者执行
在这里插入图片描述
命令说明:
在这里插入图片描述

  1. 修改/etc/login.defs
    在文件尾部添加
SU_WHEEL_ONLY yes

在这里插入图片描述

  1. 添加用户到管理员,禁止普通用户su 到root
#把hadoop用户添加到wheel组中
usermod -G wheel hadoop
#查看wheel组中是否有hadoop用户
id hadoop 或者 cat /etc/group | grep wheel
  1. 使用普通用户验证一下,由于普通用户没有在wheel组中,所以没有su root 权限
  2. 修改/etc/pam.d/su 下的文件 将下图中井号去掉在这里插入图片描述

完成之后即不许要密码也可su 到root
9 配置hosts文件

修改/etc/hosts 文件
追加:

192.168.199.160 nn1.hadoop
192.168.199.161 nn2.hadoop
192.168.199.162 s1.hadoop
192.168.199.163 s2.hadoop
192.168.199.164 s3.hadoop

10 克隆4台机器
右键虚拟机 >管理>克隆
在这里插入图片描述

下一步之后选择完整克隆
在这里插入图片描述
10.1 配置静态IP

vim  /etc/sysconfig/network-scripts/ifcfg-ens33 

在这里插入图片描述
重启network.service

systemctl restart network.service

最后别忘记更改hostname

#更改hostname
hostnamectl set-hostname nn2.hadoop
#查看hostname
hostname

剩下几台操作都和这个一致
10.2 配置、etc/resolv.conf 的 nameserver
这个是修改DNS 的 使用命令 vim etc/resolv.conf 修改nameserver
我的是
在这里插入图片描述
10.3 停掉NetworkManager服务

#停止NetworkManager服务
systemctl stop NetworkManager.service  
#设置开机不启动
systemctl disable NetworkManager.service 
#重启网络服务
systemctl restart NetworkManager.service 

11 scp命令和ssh命令说明及使用
因为会用到远程拷贝等命令,所以了解一下相关命令及批量处理
scp:
scp 文件名 登录用户名@目标机器IP或主机名:目标目录
示例:

scp /home/hadoop/a1 hadoop@s1.hadoop:/home/hadoop/

ssh:
指定用户登录其他机器
ssh 登录用户名@目标ip或主机名
示例:

ssh hadoop@s1.hadoop

批量脚本
下面是我的批量处理脚本
ips:
在这里插入图片描述
ssh_all.sh:

#!/bin/bash
RUN_HOME=$(cd "$(dirname "$0")"; echo "${pwd}")

NOW_LIST=(`cat ${RUN_HOME}/ips`)

SSH_USER="hadoop"
for i in ${NOW_LIST[@]}; do
	f_cmd="ssh $SSH_USER@$i \"$*\""
	echo $f_cmd
	if eval $f_cmd; then
		echo "OK"
	else
		echo "FAIL"
	fi
done

解读:循环遍历ips 登录hadoop用户
测试:

~/hadoop_op/ssh_all.sh ls

结果:在这里插入图片描述

scp_all.sh:

#!/bin/bash

RUN_HOME=$(cd "$(dirname "$0")"; echo "${PWD}")

NOW_LIST=(`cat ${RUN_HOME}/ips`)

SSH_USER="hadoop"
for i in ${NOW_LIST[@]}; do
	f_cmd="scp $1 $SSH_USER@$i:$2"
	echo $f_cmd
	if eval $f_cmd; then
		echo "OK"
	else
		echo "FAIL"
	fi	
done

解读:循环遍历ips 将$1(参数) 文件 拷贝 到其他机器的$2下
测试:

#将home目录下的exe.sh 拷贝到ips的那些机器的home目录下
~/hadoop_op/scp_all.sh ~/exe.sh ~/

exe.sh:

cmd=$*

su - <<EOF
$cmd

EOF

ssh_root.sh:

#!/bin/bash

RUN_HOME=$(cd "$(dirname "$0")"; echo "${PWD}")

NOW_LIST=(`cat ${RUN_HOME}/ips`)

SSH_USER="hadoop"
for i in ${NOW_LIST[@]}; do
	f_cmd="ssh $SSH_USER@$i ~/exe.sh \"$*\""
	echo $f_cmd
	if eval $f_cmd; then
		echo "OK"
	else
		echo "FAIL"
	fi
done

解读:使用hadoop用户登录之后 在执行命令
测试:

#看各机器home目录下是否有exe.sh
./ssh_root.sh "ls ~/|grep exe.sh"

在这里插入图片描述

基础环境准备及相关脚本以及测试结果都在上面了,有问题可以留言.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值