KickStart安装CentOS,同时安装和配置hadoop
声明:这篇文章是前面是拾人牙慧,我是结合 http://www.111cn.net/sys/linux/59969.htm 和 http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html 两篇博客写的。
后面关于IP的部分是自己的
一:系统环境
实验平台:win7,VMware 12.0.0 build-2985596
要安装的系统:CentOS 6.7 64位
要安装的软件:hadoop 1.2.1,java
假设每台机器的网卡都是eth0
二:实验步骤
1.在VMware上先安装一个CentOS 6.7 64,网络采用桥接模式;这台机器是DHCP服务器,HTTP服务器,TFTP服务器一体的;这里假设它的IP是192.168.0.57,并且为了方便,我把这台机器叫server,下面所有的配置都是在server上进行的。
2.关闭server的防火墙和selinux
service iptables stop #临时关闭防护墙
setenforce 0 #临时关闭selinux
3.安装并配置http服务
yum -y install httpd #安装httpd
/etc/init.d/httpd start #启动http服务
mkdir -p /var/www/html/ #http服务默认的根目录就是这个文件夹,如果没有的话就新建
http服务默认的端口是80,可以在 /var/www/html/中随便放一个文件如test.txt ,然后在浏览器中输入 http://192.168.0.57:80/test.txt 看看是否显示
4.挂载Centos的ISO文件
使用任何方法找一个CentOS的ISO文件,我用的是CentOS-6.7-x86_64-bin-DVD1.iso,把它放入server中某一个位置,我放在 /root 文件夹中(因为是用root操作server的)
mkdir -p /var/www/html/os #新建一个os文件夹用来存放ISO中的所有文件
mount -t iso9660 -o loop /root/CentOS-6.7-x86_64-bin-DVD1.iso /var/www/html/os #把ISO挂载到os文件夹下
cd /var/www/html/os & ll #看看是否挂载成功
5.配置TFTP服务
yum -y install tftp-server
修改配置文件:/etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no #修改的是这行,原来是yes,改为no
per_source = 11
cps = 100 2
flags = IPv4
}
/etc/init.d/xinetd restart #因为tftp服务是挂载在超级进程xinetd 下的,所以通过启动xinetd 来启动tftp服务。
6.配置DHCP服务
yum -y install dhcp
cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #注意这里的4.1.1是dhcp的版本,可能会不一样
修改/etc/dhcp/dhcpd.conf 配置文件,内容如下:
ddns-update-style interim;
ignore client-updates;
filename "pxelinux.0"; #pxelinux 启动文件位置;
next-server 192.168.0.57; #这里是server的IP地址 subnet 192.168.111.0 netmask 255.255.255.0 { option routers 192.168.0.57; #这里还是server的IP地址
option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.0.2 192.168.0.200; #这是分配的IP地址的范围
default-lease-time 21600;
max-lease-time 43200;
}
/etc/init.d/dhcpd start #启动DHCP服务
7.配置支持PXE的启动程序
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /var/www/html/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /var/www/html/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /var/www/html/cdrom/isolinux/*.msg /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
vi /var/lib/tftpboot/pxelinux.cfg/default #default中的所有内容如下,
default ks #默认启动的是 'label ks' 中标记的启动内核
prompt 1 #显示 'boot: ' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。
timeout 6 #在用户输入之前的超时时间,单位为 1/10 秒。
display boot.msg #显示某个文件的内容,注意文件的路径。默认是在/var/lib/tftpboot/ 目录下。也可以指定位类似 '/install/boot.msg'这样的,路径+文件名。
F1 boot.msg #按下 'F1' 这样的键后显示的文件。
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux #'label' 指定你在 'boot:' 提示符下输入的关键字,比如boot: linux[ENTER],这个会启动'label linux' 下标记的kernel 和initrd.img 文件。
kernel vmlinuz #kernel 参数指定要启动的内核。
append initrd=initrd.img #append 指定追加给内核的参数,能够在grub 里使用的追加给内核的参数,在这里也都可以使用。
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks=http://192.168.0.57/ks.cfg initrd=initrd.img #告诉系统,从哪里获取ks.cfg文件 ,这里的IP是server的IP
label local
localboot 1
label memtest86
kernel memtest
append -
8.安装Kickstart并配置ks.cfg文件
yum install system-config-kickstart
如果已经安装了X Windows 和Desktop,或者就是在图形环境中操作的server,那么运行命令
system-config-kickstart #启动图形界面,配置ks.cfg
如果没有图形界面,那也无所谓,自己生成个ks.cfg也可以。
按照下面的图形一步步来,最后 File -> Save 保存到 /var/www/html/文件夹下,文件名是ks.cfg
到这里server的所有配置项已经好了
10. 实验
再用VMware新建一个空白硬盘的虚拟器,网络还是桥接模式,启动之后会看到屏幕有一行DHCP:/ 然后就进入安装了
关于IP,在hadoop集群中有N多台机器,我需要知道它们的IP并把它们设置到DNS服务器中去,那么我们就需要一个方法收集所有机器的IP!另外每台机器的IP都应该是固定的,不应该是通过DHCP动态获得的!
1.关于收集IP,我一个思路,在server上配置NFS,假设把/ips文件夹共享出去,在每台机器上mount这个文件夹,同时在里面新建一个文件,文件的名称就是该台机器的IP
2.设置静态IP,这个只能通过修改/etc/sysconfig/network-scripts/ifcfg-eth0来进行
还记得上面第9步的最后一幅图吗?他是设置 Post-Installation Script,那么我们就可以写一个脚本,来实现上面的1,2两步,把下面的脚本拷贝到Post-Installation Script中去,当然该脚本还实现了其他功能,我都有注释。
其他功能包括添加hadoop用户,远程下载hadoop和java,配置PATH,mount hadoop的master服务器的公钥,配置dns,(如果用nfs分享hadoop的配置文件,下面也有)。
#declare -i number=$RANDOM*100/32768 #这两行我注释了,如果集群很大的话,最好取消注释。因为下面很多操作会访问http服务器,如果集群很大同时访问的话,http服务器可能会爆掉,所以先让主线程休眠随机的秒数再开始进行下面的工作
#sleep ${number} NFS_SERVER_ID=192.168.0.57 #不是说要用NFS吗?这里就是NFS服务器的地址
NFS_SERVER_PATH_IPS=/ips #NFS服务器共享出去的文件夹,这个文件夹的作用是存放名称就是各台机器IP的文件
NFS_SERVER_PATH_HADOOP_CONF=/conf #干脆hadoop的配置文件也有NFS服务器提供吧^_^。这个文件夹的作用是存放hadoop的所有配置文件,不过这样做其实增大了风险,如果NFS服务器挂了。。。
NFS_SERVER_PATH_SSH=/ssh #要用NFS共享hadoop的master的公钥,这个文件夹的作用是存放master的公钥
PXE_URL=http://192.168.0.57 #http服务器的地址,我这里还提供了hadoop 和 java的下载; 还记得上面有个文件夹/var/www/html吗?把hadoop和java的gz压缩文件都放在/var/www/html下面就可以了
ROOT_DIR=/opt/modules # hadoop和java的安装地址
DNS=192.168.0.116 #大型集群肯定用DNS服务器啦,这个是DNS服务器的地址 #yum -y install rpcbind nfs-utils #每个datanode也是NFS的一个客户端,得装上客户端软件,我把这一行注释了,因为在生成ks.cfg文件时,在 Package Selection时可以选择 Servers -> NFS file server
/etc/init.d/rpcbind start #就算是NFS的client,也得启动这两个服务
/etc/init.d/nfslock start
chkconfig rpcbind on #开机启动,要不然hadoop就没有conf文件了!!!
chkconfig nfslock on
useradd hadoop #添加一个用户 hadoop
echo '' | passwd --stdin hadoop #把hadoop用户的密码设置为 123456 mkdir -p ${ROOT_DIR} #新建hadoop和java的安装根目录
cd ${ROOT_DIR} #进入安装根目录
#get hadoop and java
wget "${PXE_URL}/jdk-7u79-linux-x64.tar.gz" "${PXE_URL}/hadoop-1.2.1.gz" #从http服务器上下载hadoop和java
tar -xf jdk-7u79-linux-x64.tar.gz #解压hadoop
tar -xf hadoop-1.2..gz #解压java
chown -R hadoop ${ROOT_DIR} #把安装根目录下的所有文件和文件夹的所有者改成hadoop
rm -rf ${ROOT_DIR}/hadoop-1.2.1/conf/* #把hadoop现有的配置文件先都删除了
mount -t nfs ${NFS_SERVER_ID}:${NFS_SERVER_PATH_HADOOP_CONF} ${ROOT_DIR}/hadoop-1.2.1/conf/ #把远程的hadoop配置文件mount到本地 ROUTE=$(route -n|grep "^0.0.0.0"|awk '{print $2}') #一直到下面的红色的EOF都是设置静态IP,同时还设置了DNS
BROADCAST=$(/sbin/ifconfig eth0|grep -i bcast|awk '{print $3}'|awk -F":" '{print $2}')
HWADDR=$(/sbin/ifconfig eth0|grep -i HWaddr|awk '{print $5}')
IPADDR=$(/sbin/ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F":" '{print $2}')
NETMASK=$(/sbin/ifconfig eth0|grep "inet addr"|awk '{print $4}'|awk -F":" '{print $2}')
cat >/etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
DEVICE=eth0
BOOTPROTO=static
BROADCAST=$BROADCAST
HWADDR=$HWADDR
IPADDR=$IPADDR
NETMASK=$NETMASK
GATEWAY=$ROUTEroo
ONBOOT=yes
DNS1=$DNS
EOF
mkdir -p /ips
mount -t nfs ${NFS_SERVER_ID}:${NFS_SERVER_PATH_IPS} /ips #把NFS远程文件夹mount到本地
touch /ips/${IPADDR} #在远程文件夹中新建一个文件,文件名称就是该机器的IP,那么在NFS服务器中就收集了整个集群的所有机器的IP
echo "export JAVA_HOME=${ROOT_DIR}/jdk1.7.0.79" >> /home/hadoop/.bash_profile #这三行只是为了操作java和hadoop时方便,也可以不要
echo "export HADOOP_HOME=${ROOT_DIR}/hadoop-1.2.1" >> /home/hadoop/.bash_profile
echo "export PATH=\${JAVA_HOME}/bin:\${HADOOP_HOME}/bin:\${HADOOP_HOME}/sbin:\${PATH}" >> /home/hadoop/.bash_profile service network restart #重新启动网络服务,或者这里直接reboot也可以,反正是在装系统,装系统时重启不是很正常吗
KickStart安装CentOS,同时安装和配置hadoop的更多相关文章
- VritualBox安装CentOS及安装增强工具图文教程
一 VM VirtualBox VirtualBox可在官网https://www.virtualbox.org/下载,完全免费. 二 安装CentOS系统(以CentOS6.9为例) 1.Cen ...
- CentOS部署NetCore - 1. 安装CentOS 7 & 安装 Nginx
1. 环境: Win7 64bit 2. 准备: VMWare(12.0.0 build-2985596) CentOS 7 Minimal ISO (http://isoredirect.cento ...
- 在VMware下安装CentOS系列1:配置VMware
安装环境 VMware Workstation v9.0.0 build-812388 CentOS-6.3-x86_64-minimal.iso minimal,bin-DVD,netinstall ...
- 在VM上安装centOS后的网络配置
花了点时间,研究了下VM上的linux虚拟机的网络配置问题.1.环境主机:winXP SP2,家庭宽带,局域网连到路由器,ip地址为192.168.1.101. 虚拟机:centOS(redhat l ...
- VMware虚拟机下安装CentOS 6.10并配置访问外网
VMware安装包以及CentOS 6.5安装包 链接:https://pan.baidu.com/s/1wQi5GSgp4klXhtd84aoMSA 提取码:9l5y 链接:https://pan. ...
- Hyper-v安装centos后的网络配置
修改配置文件 进入目录:cd /etc/sysconfig/network-scripts/ 修改ifcfg-eth0文件(不通机器文件名可能不同,可以通过 ip addr 命令查看网卡名) HWAD ...
- 在VMware安装Centos再安装Oracle数据库(个人学习使用)
打开VMware 选择稍后安装 自定义安装 小生安装的是64位的Centos 给虚拟机设置名称和安装位置 设置虚拟机打处理器并分配内存(oracle12G我建议内存为2G以上) 网络类型选择仅主机模式 ...
- oracle 12c centos 7 安装配置
1,安装centos 7 安装 宿主机配置信息: 内存:8G 系统盘:30G swap分区:30G (笑了oracle安装自检不过) /u01(50G) :oracle安装目录 /u02(50G): ...
- VMware虚拟机安装Centos预安装环境图文教程1
前言: 习惯了微软的各种可视化开发软件环境,突然接触Linux命令式的操作环境,总是会让人有些反感跟抵触的. 经过了几天的研究,发现Linux也并不是那么的深不可测.在配置网站部署环境的时候,系统集成 ...
- 笔记本win2008 r2的hyper-v安装centos
一.i5以上cpu支持虚拟化,不过默认是关闭的,先到bios设置里把虚拟功能打开: 二.“服务器管理器”->“角色”里安装hyper-v并重启: 三.设置无线网络桥接,有线就不需要了,具体如下: ...
随机推荐
- Kattis - fairdivision 【贪心】
题意 有一堆人 要给他们的朋友 买一个生日礼物,然后 每个人 给出自己的最大负担额度 并且给出礼物总价 然后要给出一种解决方案 尽量让 所有人的支出都接近平均,如果实在无法平均,那就让 先来的人 多处 ...
- Java实现将一段汉字变成unicode码
public class T { public static void main(String[] args) { String s = "java 中文编码"; System.o ...
- ELK日志分析系统-Logstack
ELK日志分析系统 作者:Danbo 2016-*-* 本文是学习笔记,参考ELK Stack中文指南,链接:https://www.gitbook.com/book/chenryn/kibana-g ...
- Mysql——JDBC编程 简单的例子
第一类连接Mysql方法见下图: 第二类连接Mysql方法:(跟第一类差不多,并提供查询操作) 首先在Mysql中建立testjdbc数据库,在该数据库下面建立Student表: 参考代码: CREA ...
- Data Structure Linked List: Flattening a Linked List
http://www.geeksforgeeks.org/flattening-a-linked-list/ #include <iostream> #include <vector ...
- hbase shell-general(常规指令)
hbase shell常规指令解释篇 1. status (显示集群状态,master,server情况,显示内容的详略程度可选) hbase(main)::> help 'status' Sh ...
- File Space——一个java structs2.0的小栗子(DIY)
1 概述 File Space系统适用于团体,主要提供的是团队文件分享以及个人文件的存储管理服务.分为个人文件存储管理平台和团队文件共享平台. 个人文件存储平台主要为个人提供相关的文件分类存储服务:该 ...
- Android系统定制之SystemUI修改:下拉通知栏尺寸【转】
本文转载自:https://blog.csdn.net/huil0925/article/details/67632358 最近项目需要修改下拉通知栏面板的宽度,完成后,写个Blog做个总结,也提供给 ...
- Blog迁移至Jekyll
后续的Blog都将在 http://zhwbqd.github.io/ 为您呈现
- Oracle创建函数
--创建函数语法 create [or replace] function [schema.]function_name (函数参数列表) --参数有IN.OUT.IN OUT三种类型:IN代表需要输 ...