HADOOP集群搭建_apache官方源码方式搭建

来源:互联网 发布:安装ubuntu系统 编辑:程序博客网 时间:2024/06/01 10:42

一:准备工作

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 



4:配置hosts主机名

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


6:配置yum元到挂载光驱

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 - Mediabaseurl=file:///media/CentOS/        file:///mnt/cdrom/        file:///media/cdrecorder/gpgcheck=1enabled=1gpgkey=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.html


7:安装ssh命令
yum -y install openssh-clients


8:配置sudo命令

root编辑 vi /etc/sudoers

在文件的如下位置,为hadoop添加一行即可

root    ALL=(ALL)       ALL     

hadoop01  ALL=(ALL)       ALL


9:关于桥接模式,如果要访问其他的机子能访问虚拟机需要使用桥接模式,详情见:
http://blog.csdn.net/l1028386804/article/details/52267554

10:SSH免密登陆配置

1 SSH工作机制

1、相关概念

SSH 为 Secure Shell(安全外壳协议) 的缩写。

很多ftppoptelnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而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 1:主机名配置

1/ 查看主机名

hostname

2/ 修改主机名(重启后无效)

hostname hadoop

 

3/ 修改主机名(重启后永久生效)

vi /ect/sysconfig/network


12:Linux上常用软件安装

1.1 Linux系统软件安装方式

Linux上的软件安装有以下几种常见方式:

1、二进制发布包

软件已经针对具体平台编译打包发布,只要解压,修改配置即可

 

2、RPM发布包

软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装

 

3、Yum在线安装

软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上存在的rpm软件,并且会自动解决软件安装过程中的库依赖问题

(注:类似于maven

 

4、源码编译安装

软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署

 

1.2 JAVA软件安装——JDK安装

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 

即可

 

1.3 JAVA软件安装——Tomcat安装

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.4 RPM方式软件安装——MySql数据库安装

1.4.4 desktop版的centos中安装mysql

没有上述那么麻烦,基本上都不缺依赖,过程如下:

 

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

 

 

 

 

 

 

1.4.1 mini版的centos安装mysql服务

可以用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.4.2 安装mysql客户端程序

 

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%]

 

1.4.3 修改mysql用户root密码

安装完成后,先确定mysql服务进程是否启动

netstat -nltp

如果有mysql,会监听3306端口

如果没有,则手动启动

service mysql start

1、按照前面的提示,修改密码

[root@mini ~]# /usr/bin/mysql_secure_installation

进入交互式提示设置,按提示操作即可

 

 

补充:在资料中又给了一个5.6mysql版本,这个安装完成后,mysqlroot密码是自动生成的,注意看提示,密码保存在哪个位置

/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的,注意主机名


二:正式安装

1.1.2服务器准备

本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:

Vmware 11.0

Centos  6.5  64bit

 

1.1.3网络环境准备

采用桥接方式联网

网关地址:192.168.33.1

3个服务器节点IP地址:192.168.33.101192.168.33.102192.168.33.103

子网掩码:255.255.255.0

1.1.4服务器系统设置

添加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免密登陆

配置防火墙

 

1.1.5 Jdk环境安装

上传jdk安装包

规划安装目录  /home/hadoop/apps/jdk_1.7.65

解压安装包

配置环境变量 /etc/profile

 

 

 

 

 

 

 

 

 

 

1.1.6 HADOOP安装部署

补充: HADOOP的版本选择

1APACHE官方版本 

      大版本:  0.20.2

                1.x

                2.x       2.6.4   2.7.3

2、商业发行版(商业版提供完善的管理系统、修bug可能领先于官方):

       Cloudera公司的CDH5.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

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://hdp-node-01:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/HADOOP/apps/hadoop-2.6.1/tmp</value>

</property>

</configuration>

vi  hdfs-site.xml

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>/home/hadoop/data/name,/path2/,/path3/,nfs://</value>

</property>

<!---namenode配置多个目录和datanode配置多个目录,有什么区别?---->

<property>

<name>dfs.datanode.data.dir</name>

<value>/home/hadoop/data/data,/path2/</value>

</property>

 

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

 

<property>

<name>dfs.secondary.http.address</name>

<value>hdp-node-01:50090</value>

</property>

</configuration>

 

 

 

vi  mapred-site.xml.template 需要重命名: mv mapred-site.xml.template mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

 

vi  yarn-site.xml

<configuration>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop01</value>

</property>

 

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

 

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不一致,集群的nameNodedataNode必须保持一致!

如何使用bin/hadoop  namenode  -format格式化两次就会出现上面的bug

解决办法:

第一种:拷贝/home/hadoop/data(nameNode的路径)文件夹里的name/current文件夹下的VERSION/home/hadoop/data/data/current文件夹下(注意其他节点也一样,clusterID要一致)

第二种:删除/home/hadoop/data下的dataname文件夹下的current文件夹(其他节点也需要删除),然后执行一次bin/hadoop  namenode  -format格式化,会重新生成clusterID

Bug详情见http://blog.csdn.net/zhangt85/article/details/42078347


 

1.1.7 启动集群

初始化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

 

1.1.8 测试

1、上传文件到HDFS

从本地上传一个文本文件到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

 

2、运行一个mapreduce程序

HADOOP安装目录下,运行一个示例mr程序

cd $HADOOP_HOME/share/hadoop/mapreduce/

hadoop jar mapredcue-example-2.6.1.jar wordcount /wordcount/input  /wordcount/output 


0 0