一:准备工作
1:安装好CentOS-6.6-x86_64-bin-DVD1.iso(本人安装了三个节点,详情见前文,不过网络模式需要修改为桥接模式)
2:修改配置文件,linux系统命令行方式启动(实际生产中都是改方式,没有可视化界面)
vi /etc/inittab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode ## 没有图形界面的全功能的多用户的启动级别
# 4 - unused
# 5 - X11 ## 有图形界面的启动级别
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault: ## 配置默认启动级别
## 通常将默认启动级别设置为:3
3:配置虚拟网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/hosts
5:挂载光驱(或者镜像文件,需要上传镜像文件)
可以挂载光盘、硬盘、磁带、光盘镜像文件等
1/ 挂载光驱
mkdir /mnt/cdrom 创建一个目录,用来挂载
mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/ 将设备/dev/cdrom挂载到 挂载点 : /mnt/cdrom中(注意:/dev/cdrom只是一个链接,标识符,使用cd查看不了)
2/ 挂载光盘镜像文件(.iso文件)
mount -t iso9660 -o loop /home/hadoop/Centos-6.7.DVD.iso /mnt/centos
注:挂载的资源在重启后即失效,需要重新挂载。要想自动挂载,可以将挂载信息设置到/etc/fstab配置文件中,如下:
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0 /root/CentOS-6.7-x86_64-bin-DVD1.iso /mnt/centos iso9660 defaults,ro,loop 0 0 |
3/ 卸载 umount
umount /mnt/cdrom
** 存储空间查看
df -h
1、挂载系统安装光盘
# mount /dev/cdrom /mnt/cdrom/
2、配置本地yum源
# cd /etc/yum.repos.d/
# ls
会看到四个repo 文件
CentOS-Base.repo 是yum 网络源的配置文件
CentOS-Media.repo 是yum 本地源的配置文件
修改CentOS-Media.repo
# cat CentOS-Media.repo
# CentOS-Media.repo # # This repo is used to mount the default locations for a CDROM / DVD on # CentOS-5. You can use this repo and yum to install items directly off the # DVD ISO that we release. # # To use this repo, put in your DVD and use it with the other repos too: # yum --enablerepo=c5-media [command] # # or for ONLY the media repo, do this: # # yum --disablerepo=\* --enablerepo=c5-media [command] [c5-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS/ file:///mnt/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
在baseurl 中修改第2个路径为/mnt/cdrom(即为光盘挂载点)
将enabled=0改为1
3、禁用默认的yum 网络源
将yum 网络源配置文件改名为CentOS-Base.repo.bak,否则会先在网络源中寻找适合的包,改名之后直接从本地源读取。
详情见http://www.cnblogs.com/mchina/archive/2013/01/04/2842275.html7:安装ssh命令
yum -y install openssh-clients
8:配置sudo命令
用root编辑 vi /etc/sudoers
在文件的如下位置,为hadoop添加一行即可
root ALL=(ALL) ALL
hadoop01 ALL=(ALL) ALL
1、相关概念
SSH 为 Secure Shell(安全外壳协议) 的缩写。
很多ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而SSH就是专为远程登录会话和其他网络服务提供安全性的协议。
SSH的具体实现是由客户端和服务端的软件组成的
服务端是一个守护进程(sshd),他在后台运行并响应来自客户端的连接请求。
客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。
2、认证机制
从客户端来看,SSH提供两种级别的安全验证。
v 第一种方式(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。
v 第二种方式(基于密钥的安全验证)
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
假如 A 要登陆 B
在A上操作:
1/ 首先生成密钥对
ssh-keygen (提示时,直接回车即可)
2/ 再将A自己的公钥拷贝并追加到B的授权列表文件authorized_keys中
ssh-copy-id B
特别注意:haoop01上执行上述命令,将公钥拷贝给hadoop02,hadoop03时,也要拷贝给自己,特别注意!
1/ 查看主机名
hostname
2/ 修改主机名(重启后无效)
hostname hadoop
3/ 修改主机名(重启后永久生效)
vi /ect/sysconfig/network
Linux上的软件安装有以下几种常见方式:
1、二进制发布包
软件已经针对具体平台编译打包发布,只要解压,修改配置即可
2、RPM发布包
软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装
3、Yum在线安装
软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上存在的rpm软件,并且会自动解决软件安装过程中的库依赖问题
(注:类似于maven)
4、源码编译安装
软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署
1、上传jdk压缩包
通过sftp工具上传即可
2、解压jdk压缩包
tar -zxvf jdk-7u67-linux-x64.gz -C /usr/local/
3、修改环境变量PATH
vi /etc/profile
在文件最后加两行:
export JAVA_HOME=/usr/local/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
4、让环境变量生效
source /etc/profile
即可
tar -zxvf /soft/apache-tomcat-7.0.47.tar.gz -C /usr/local/
cd /usr/local/apache-tomcat-7.0.47/bin/
./startup.sh
没有上述那么麻烦,基本上都不缺依赖,过程如下:
1、先装server
rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
发现了包冲突,执行删除包的命令解决:
rpm -e mysql-libs-5.1.73-5.el6_6.x86_64 --nodeps
然后继续重新安装server
rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
一定要确保server安装成功!!!
2、再装client
rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
3、启动server
service mysql start
检查启动是否成功:
service mysql status 或者 查看端口:netstat -nltp 看是否有进程在监听3306
4、用客户端连接到mysql-server上进行root密码的修改
注:在server安装时已经生成了一个随机的root密码 ,查看: cat /root/.mysql_secret
然后,运行一个脚本来交互式地修改root密码即可:/usr/bin/mysql_secure_installation
可以用yum方式来安装,此处演示在本地使用rpm包安装
[root@mini ~]# rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm
1、报错——缺少依赖包perl
error: Failed dependencies:
perl is needed by MySQL-server-5.1.73-1.glibc23.i386
解决:yum install -y perl-devel
2、报错——缺少依赖包libc.so.6
[root@mini ~]# rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm
error: Failed dependencies:
libc.so.6 is needed by MySQL-server-5.1.73-1.glibc23.i386
解决:yum install -y libc.so.6
3、报错——缺少依赖包 libgcc_s.so.1
[root@mini ~]# rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm
error: Failed dependencies:
libgcc_s.so.1 is needed by MySQL-server-5.1.73-1.glibc23.i386
解决:yum install -y libc.so.1
4、报错——依赖包冲突
[root@mini ~]# rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm
conflicts with file from package mysql-libs-5.1.73-5.el6_6.x86_64
解决:
卸载依赖的冲突包: rpm -e mysql-libs-5.1.73-5.el6_6 --nodeps
5、安装完成——注意提示信息
再次执行安装
[root@mini ~]# rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm
Preparing... ########################################### [100%]
1:MySQL-server ########################################### [100%]
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h mini password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
** 补充:
如果发生rpm包冲突conflict,怎么处理
首先,找到有哪些包冲突
rpm -qa | grep mysql
然后,卸载冲突的包
rpm -e mysql-libs-5.1.73-5.el6_6.x86_64 --nodeps
1、用rpm命令安装客户端
[root@mini ~]# rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm
error: Failed dependencies:
libncursesw.so.5 is needed by MySQL-client-5.1.73-1.glibc23.i386
报错缺依赖,解决之:
yum install -y libncursesw.so.5 ## yum本地源需要更换光盘为dvd2
再次执行安装
[root@mini ~]# rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm
Preparing... ########################################### [100%]
1:MySQL-client ########################################### [100%]
安装完成后,先确定mysql服务进程是否启动
netstat -nltp
如果有mysql,会监听3306端口
如果没有,则手动启动
service mysql start
1、按照前面的提示,修改密码
[root@mini ~]# /usr/bin/mysql_secure_installation
进入交互式提示设置,按提示操作即可
补充:在资料中又给了一个5.6的mysql版本,这个安装完成后,mysql的root密码是自动生成的,注意看提示,密码保存在哪个位置
/root/.mysql_secret
安装完成后,直接用这个生成的随机密码即可登录mysql
进入mysql后当然可以使用sql来修改root的密码
mysql>set password=password("root");
mysql>flush privileges;
1.5.4 开启mysql的远程登录权限
mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
注意上面有部分代码是直接copy的,注意主机名二:正式安装
本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:
Vmware 11.0
Centos 6.5 64bit
采用桥接方式联网
网关地址:192.168.33.1
3个服务器节点IP地址:192.168.33.101、192.168.33.102、192.168.33.103
子网掩码:255.255.255.0
添加HADOOP用户
为HADOOP用户分配sudoer权限
同步时间(如何同步?)
设置主机名
n hdp-node-01
n hdp-node-02
n hdp-node-03
配置内网域名映射:
n 192.168.33.101 hdp-node-01
n 192.168.33.102 hdp-node-02
n 192.168.33.103 hdp-node-03
配置ssh免密登陆
配置防火墙
上传jdk安装包
规划安装目录 /home/hadoop/apps/jdk_1.7.65
解压安装包
配置环境变量 /etc/profile
补充: HADOOP的版本选择
1、APACHE官方版本
大版本: 0.20.2
1.x
2.x 2.6.4 2.7.3
2、商业发行版(商业版提供完善的管理系统、修bug可能领先于官方):
Cloudera公司的CDH:5.7.x
上传HADOOP安装包
规划安装目录 /root/apps/hadoop-2.6.1
解压安装包
修改配置文件 $HADOOP_HOME/etc/hadoop/
最简化配置如下:
vi hadoop-env.sh
# The java implementation to use.(输入命令echo $JAVA_HOME 可以查到) export JAVA_HOME=/home/hadoop/apps/jdk1.7.0_51 |
vi core-site.xml
|
vi hdfs-site.xml
|
vi mapred-site.xml.template 需要重命名: mv mapred-site.xml.template mapred-site.xml
|
vi yarn-site.xml
|
vi slaves
hdp-node-01(节点名称) hdp-node-02 hdp-node-03 |
配置hadoop的全局变量
(可以合并PATH如下面,#export PATH=$PATH:$HADOOP/bin:$JAVA_HOME/bin)
export JAVA_HOME=/home/hadoop/apps/jdk1.7.0_75
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/root/apps/hadoop-2.6.4
export PATH=$PATH:$HADOOP_HOME/bin
#export PATH=$PATH:$HADOOP/bin:$JAVA_HOME/bin
关闭防火墙
service iptables status(查看状态)
service iptables stop(关闭防火墙)
service iptable start(启动防火墙)
趟过的坑:clusterID不一致,集群的nameNode和dataNode必须保持一致!
如何使用bin/hadoop namenode -format格式化两次就会出现上面的bug
解决办法:
第一种:拷贝/home/hadoop/data(nameNode的路径)文件夹里的name/current文件夹下的VERSION到/home/hadoop/data/data/current文件夹下(注意其他节点也一样,clusterID要一致)
第二种:删除/home/hadoop/data下的data和name文件夹下的current文件夹(其他节点也需要删除),然后执行一次bin/hadoop namenode -format格式化,会重新生成clusterID。
Bug详情见http://blog.csdn.net/zhangt85/article/details/42078347
初始化HDFS
bin/hadoop namenode -format |
启动nameNode(想单独启用nameNode使用此命令)
[root@hadoop01 sbin]# ./hadoop-daemon.sh start namenode
启动HDFS
sbin/start-dfs.sh |
启动YARN
sbin/start-yarn.sh |
从本地上传一个文本文件到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 |
在HADOOP安装目录下,运行一个示例mr程序
cd $HADOOP_HOME/share/hadoop/mapreduce/ hadoop jar mapredcue-example-2.6.1.jar wordcount /wordcount/input /wordcount/output |