1. 准备工作
1) 版本选择
Hadoop+Hbase+Hive一般设计大数据业务的必选组件,首先选择兼容的组件进行搭建至关重要,环境搭建好不会轻易的换版本,选择一个兼容性强,稳定的版本。
本文选择组件hadoop2.6.0,Hbase0.96.2,Hive1.13.1,现阶段此种组合算是比较新的。0.98.8版本兼容性不好,以至于遗弃而选择0.96.2.
软件官方下载地址:http://mirrors.cnnic.cn/apache/,如下图所示
点击进去选择自己需要的版本即可http://mirrors.cnnic.cn/apache/hadoop/common/stable2/
选择stable文件夹下的即是最新稳定版本
2) 安装jdk(本部分操作在root用户下操作)
本人操作系统是64位的centos6.4操作系统,centos安装好自带openjdk,但不是很好用,最好全卸载,手动安装一个合适的jdk版本。
(1)用命令查看 java -version
java version "1.6.0"
OpenJDK Runtime Environment (build 1.6.0-b09)
OpenJDK 64-Bit Server VM (build 1.6.0-b09, mixed mode)
先卸载掉openjdk,在安装sun公司的jdk.
(2)查看 rpm -qa | grep jdk
显示如下信息:
java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
(3)卸载:
yum -y remove java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
如果显示多个一定要逐个卸载,否则手动安装的不生效。
(4)手动安装jdk.
下载jdk包:jdk1.6.tar.gz
解压:tar -zxvf jdk1.6.tar.gz
最好放在公共目录下,本文放在/usr/java下
配置环境变量:
注意事项:环境变量的配置最好放在/etc/profile里,这样在后面hadoop用户下使用时不会出现权限问题。
vi /etc/profile
本文配置如下:
记得设置好环境变量后,一定要执行source /etc/profile,否则设置不生效
查看安装是否成功:
通过java -version查看是否是你安装的版本
3) 创建hadoop用户
(1)创建用户组及用户名:useradd -g hadoop hadoop
为了方面后面操作,可以给hadoop用户sudo权限,并无密码登录修改/etc/sudoers即可。
(2)给/etc/sudoers赋予写权限
chmod +w /etc/sudoers
(3)增加以下两行即可:
hadoop ALL=(ALL) ALL
%hadoop ALL=(ALL) NOPASSWD: ALL
注意事项:修改好后记得将权限恢复,否则会后面安装导致错误
(4)去写权限
chmod -w /etc/sudoers
4) 安装ssh,保证机器间无密码登录(在hadoop用户操作)
首先修改hostname和hosts文件
比如现在有三台机器:ip地址分别为:192.168.210.10 192.168.210.11 192.168.210.12
我们要实现10机器无密码ssh连接11和12的机器。
(1)修改hostname:
执行sudo vim /etc/hostname 修改机器名称 为 master slave1 slave2
注意事项:机器名的命名最好不要出现下划线“_”和中划线“-”,否则会导致hadoop启动的时候报错。
(2)修改hosts
执行sudo vim /etc/hosts 添加
192.168.210.10 master
192.168.210.11 slave1
192.168.210.12 slave2
注意事项:/etc/hosts下面的127.0.0.1和localhost行一定要删除,只保留添加的用户名与IP,否则会导致hbase启动的时候报错。
(3)关闭iptables、ip6tables、selinux、ipv6
① iptables
/etc/init.d/iptables stop
chkconfig iptables off
② Ip6tables
/etc/init.d/iptables stop
chkconfig iptables off
③ selinux
vi /etc/sysconfig/selinux
设置“SELINUX=disabled”
④ 关闭ipv6
/etc/sysconfig/network 内增加 NETWORKING_IPV6=no
/etc/modprobe.d/dist.conf 增加如下内容
alias net-pf-10 off
options ipv6 disable=1
(4)安装配置SSH
ü 下载安装SSH:同样在命令行输入下面命令安装SSH
sudo apt-get install ssh
ü 配置无密码登录本机:在命令行输入下面两条命令
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ü 直接回车,完成后会在~/.ssh/生成两个文件:id_rsa和id_rsa.pub;这两个成对出现,类似钥匙和锁。
ü 再把id_rsa.pub追加到授权key里面(当前并没有authorized_keys文件)
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ü 验证SSH是否安装成功
输入 ssh master。如果显示本机登录成功就表明安装成功。
注意事项:要验证每台的用户名与IP都可以无密码登录
(4)在其他机器上同时安装ssh
ü 将master的authorized_keys 拷贝到其他两台机器上就可以实现slave1无密码访问slave1和slave2了。
拷贝命令:
scp ~/.ssh/authorized_keys slave1:~/.ssh/
scp ~/.ssh/authorized_keys slave2:~/.ssh/
ü 修改每台机器的authorized_keys 的权限为644 chomd 644 ~/.ssh/authorized_keys
完成,执行ssh slave1成功。(可能第一次要输入密码)。
2. 开始安装hadoop
1)准备工作
(1)首先到Apache官网下载Hadoop,我下载的是Hadoop2.6.0 压缩包名称:hadoop-2.6.0.tar.gz
wget http://mirrors.cnnic.cn/apache/hadoop/common/stable2/hadoop-2.6.0.tar.gz
(2)解压hadoop-2.6.0.tar.gz
tar -zxvf hadoop-2.6.0.tar.gz
(3)将文件夹拷贝到/usr/app/hadoop中
sudo mv ~/hadoop-2.6.0/ /usr/app/hadoop # 将文件名改为hadoop
sudo chown -R hadoop:hadoop /usr/local/hadoop # 修改文件权限
(4)修改环境变量信息HADOOP_HOME
vi /etc/profile
注意:一定要source /etc/profile才生效
2)修改配置文件
(hadoop-env.sh, core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml,slaves共6个配置文件)
ü Hadoop-env.sh
增加JAVA_HOME的设置:
ü core-site.xml
增加如下内容:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data01/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.210.10:9000</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
</configuration>
ü hdfs-site.xml
增加如下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data01/hadoop/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data01/hadoop/dfs/data</value>
</property>
</configuration>
ü mapred-site.xml
增加如下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://192.168.210.10:9001</value>
<final>true</final>
</property>
</configuration>
ü yarn-site.xml
增加如下内容:
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.210.10:8080</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.210.10:8081</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.210.10:8082</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
ü Slaves
增加如下内容:(slave节点的IP)
192.168.210.11
192.168.210.12
3)验证hadoop
(1)初始化文件系统HDFS
bin/hadoop namenode -format
(2)启动hadoop
cd /opt/app/hadoop-2.6.0/sbin
./start-all.sh
(3)jps查看启动是否正常
在master节点上
[hadoop@master hadoop]$ jps
7432 ResourceManager
7263 SecondaryNameNode
22597 Jps
20930 HMaster
6985 NameNode
[hadoop@master hadoop]$
在slave节点上
[hadoop@slave3 hbase-0.96.2-hadoop2]$ jps
13869 NodeManager
13751 DataNode
17125 Jps
[hadoop@slave3 hbase-0.96.2-hadoop2]$
(4)网址查看是否正常
http://192.168.210.10:50070/dfshealth.html#tab-overview
(5)运行例子:
1.先在hdfs上建个文件夹 bin/hdfs dfs -mkdir -p /user/kzy/input
bin/hdfs dfs -mkdir -p /user/kzy/output
2.先上传一些文件:bin/hdfs dfs -put etc/hadoop/ /user/kzy/input 把etc/hadoop文件上传到hdfs的/user/kzy/input中
3.执行指令
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep /user/kzy/input/hadoop /user/kzy/output/o 'dfs[a-z.]+'
注意/user/kzy/output/o 是个没有建立过的文件夹,如果用已有的文件夹会有个警告
4.查看结果
bin/hdfs dfs -cat /user/kzy/output/o/*
至此hadoop安装完成。