环境:centos 6.4 X64
192.168.2.20 Master
192.168.2.21 Hadoop1
192.168.2.22 Hadoop2
准备工作:
1、安装基本开发工具:(所有服务器)
yum groupinstall "Development Tools" -y
2、设置IP和hostname映射关系 (所有服务器)
vi /etc/hosts 修改内容如下
192.168.2.20 Master
192.168.2.21 Hadoop1
192.168.2.22 Hadoop2
设置之后通过ping其他主机hostname来确保设置成功。
3、添加hadoop用户来配置管理hadoop (所有服务器)
groupadd hadoop
useradd -g hadoop hadoop
设置密码:
passwd hadoop
将hadoop用户添加到sudo列表:
vi /etc/sudoers 添加如下内容:
hadoop ALL=(ALL) ALL
4、设置各主机间hadoop用户无密码登录
su - hadoop
ssh-keygen –t rsa (对提示采取默认设置,回车即可)
ssh-copy-id - i .ssh/id_rsa.pub hadoop@192.168.0.21
最起码要实现Master到两个slave上无密码登录
5、同步所有服务器时间,各服务器时间相差不能超过30s。 (所有服务器)
crontab -e
*/5 * * * * /usr/sbin/ntpdate 0.centos.pool.ntp.org
6、关闭所有服务器的防火墙
service iptables stop
chkconfig iptables off
7、安装JDK
安装路径:/usr/java
下载jdk-7u51-linux-x64.rpm
cd /usr/java
wget http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-x64.rpm?AuthParam=1390200728_3b9bd7abd3f5b5127de1651978bf9812
rpm -ivh jdk-7u51-linux-x64.rpm
ln -s jdk1.7.0_51 jdk 设置软连接,方便环境变量配置
设置环境变量,能够让系统引用:
cd ~
vi .bash_profile 添加如下内容:
export JAVA_HOME=/usr/java/jdk
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
保存,读取系统环境变量
source .bash_profile
测试java环境变量:
java -version 如果看到如下输出,则表示设置成功:
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
安装hadoop-2.2.0
切换到hadoop用户
安装目录:/usr/local/hadoop
cd /usr/local
下载hadoop-2.20.0
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
tar xvf hadoop-2.2.0.tar.gz
ln -s hadoop hadoop-2.2.0
添加环境变量:
vim .bash_profile 添加如下内容
export HADOOP_OPTS="-Djava.library.path=/usr/java/jdk/lib"
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=.:$CLASSPATH:$HADOOP_HOME/native/lib
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME
保存,source .bash_profie
修改hadoop配置文件
cd /hadoop/etc/hadoop
vim hadoop-env.sh 为hadoop指定java库的位置,修改内容如下:
export JAVA_HOME=/usr/java/jdk
vim core-site.xml 添加内容如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.2.20:9000</value> #指定HDFS的位置及端口
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/dfs/tmp</value>
</property>
</configuration>
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.2.20:9001</value>
</property>
<property>
<name>dfs.data.dir</name> #指定dfs目录,如果没有指定,name.dir和data.dir 的数据都放在core-site.xml中指定的tmp目录中
<value>/data/dfs</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
vim yarn-site.xml
<configuration>
<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>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.2.20:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.2.20:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.2.20:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.2.20:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.2.20:8088</value>
</property>
</configuration>
vim slaves 配置集群的DataNode,添加如下内容:
Hadoop1
Hadoop2
配置结束,将hadoop这个目录cp到其他两台salve上;
scp -r /usr/local/hadoop hadoop@Hadoop1:/usr/local/
scp -r /usr/local/hadoop hadoop@Hadoop2:/usr/local/
cp结束后只需要在Master上进行一下操作
进行HDFS格式化
hadoop namenode -format
格式化完成之后就可以启动HDFS了。
cd /usr/local/hadoop/sbin
./start-dfs.sh
启动完成后,可以使用jps命令,查看是否启动成功。如果有下面输出,表示启动成功。
jps
namenode
secondnamenode
./start-yarn.sh
安装Hbase
cd /home/hadoop
下载Hbase-0.96.0-hadoop2-bin.tar.gz
wget http://mirror.bit.edu.cn/apache/hbase/hbase-0.96.0/hbase-0.96.0-hadoop2-bin.tar.gz
tar xvf hbase-0.96.0-hadoop2-bin.tar.gz
配置Hbase
cd hbase-0.96.0-hadoop2/conf
给Hbase设置java的lib路径
vim hbase-ven.sh 修改内容如下
export JAVA_HOME=/usr/java/jdk
vim /hbase-site.xml 添加如下内容
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.2.20:9000/hbase</value>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://192.168.2.20:60000</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/dfs/data/zookeeper</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>Hadoop1,Hadoop2</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
vim regionservers 添加内容如下:
Hadoop1
Hadoop2
Hbase配置基本完成,接下来同步Hbase的jar包,应为次版本的Hbase的jar包是基于hadoop-2.1.0的,我们使用的是hadoop-2.2.0,所以要同步jar包
首先删除Hbase有关hadoop的jar包
cd ../lib
rm -rf hadoop*.jar
复制hadoop的jar包到hbase-0.96.0-hadoop2/lib下
find /usr/local/hadoop/share/hadoop -name "hadoop*.jar" | xargs -i cp {} /home/hadoop/hbase-0.96.0-hadoop2/lib/
cp Hbase到另外两台slave上:
scp -r /home/hadoop/hbase-0.96.0-hadoop2 hadoop@Hadoop1:/home/hadoop/
scp -r /home/hadoop/hbase-0.96.0-hadoop2 hadoop@Hadoop1:/home/hadoop/
启动Hbase,在Master上操作
cd /home/hadoop/hbase-0.96.0-hadoop2/bin
./start-hbase.sh
如果启动成功,通过jps命令,可以看到
HMaster
安装Hive
下载hive-0.12.0
cd /home/hadoop/
wget http://mirror.bit.edu.cn/apache/hive/hive-0.12.0/hive-0.12.0.tar.gz
tar xvf hive-0.12.0.tar.gz
将hive添加到环境变量:
vim /home/hadoop/.bash_profile 添加如下内容:
export HIVE_HOME=/home/hadoop/hive-0.12.0
export CLASSPATH=.:$CLASSPATH:$HIVE_HOME/lib
export PATH=$PATH:$HIVE_HOME/bin
配置hive
cd hive-0.12.0
vim hive-env.sh 指定hadoop的安装目录,如下
HADOOP_HOME=/usr/local/hadoop
vim hive-site.xml 配置hive,添加如下内容:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://Master:9000/hive/warehousedir</value> #指定warehouse位置
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://Master:9000/hive/scratchdir</value> #指定scratchdir位置
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx512M -Djava.library.path=/usr/java/jdk/lib</value> #指定java库文件位置
</property>
<property>
<name>hive.querylog.location</name>
<value>/home/hadoop/hive-0.12.0/logs</value> #指定日志文件位置
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.2.20:3306/hiveMeta?createDatabaseIfNotExist=true</value> #指定存储源数据的mysql地址及端口
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name> #指定hive和mysql连接的驱动文件
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name> #指定连接mysql时的用户名
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name> #指定连接mysql时的密码
<value>hive</value>
</property>
<property>
<name>hive.aux.jars.path</name>
<value>file:///home/hadoop/hive-0.12.0/lib/hive-contrib-0.13.0-SNAPSHOT.jar,file:///home/hadoop/hive-0.12.0/lib/hive-hbase-handler-0
.13.0-SNAPSHOT.jar,file:///home/hadoop/hive-0.12.0/lib/protobuf-java-2.5.0.jar,file:///home/hadoop/hive-0.12.0/lib/hbase-client-0.96
.0-hadoop2.jar,file:///home/hadoop/hive-0.12.0/lib/hbase-common-0.96.0-hadoop2.jar,file:///home/hadoop/hive-0.12.0/lib/zookeeper-3.4
.5.jar,file:///home/hadoop/hive-0.12.0/lib/guava-11.0.2.jar</value>
</property>
同步jar包
因为直接下载得到的hive是基于hadoop1.3和hbase0.94的,我们的hbse0.96是基于hadoop2.2的,所以我们必须先解决hive的hadoop版本问题,
从官网下载的hive都是用1.x的版本编译的,因此我们需要自己下载源码来用hadoop2.X的版本重新编译hive,这个过程也很简单
使用svn下载源码包
cd /usr/local/src
svn http://svn.apache.org/repos/asf/hive/trunk
下载安装编译工具maven
http://maven.apache.org/download.cgi
tar xvf apache-maven-3.1.1-bin.tar.gz
ln -s apache-maven-3.1.1 maven
加入环境变量:
vim /home/hadoop/.bash_profile 添加如下内容。
#maven
export MAVEN_HOME=/home/hadoop/maven
export CLASSPATH=.:$CLASSPATH:$MAVEN_HOME/lib
export PATH=$PATH:$MAVEN_HOME/bin
开始编译:
cd /usr/local/src/trunk
mvn clean package -DskipTests -Phadoop-2
编译好后的新jar包是存放在各个模块下的target的,这些新jar包的名字都叫hive-***-0.13.0-SNAPSHOT.jar,***为hive下的模块名,我们需要运行命令将其拷贝到hive-0.12.0/lib下。
find /usr/local/src/trunk -name "hive*SNAPSHOT.jar"|xargs -i cp {} /home/hadoop/hive-0.12.0/lib
拷贝完成后删除原lib下对应的所有的0.12版本的jar包
同步hbase的版本
到hive0.12.0/lib下,将hive-0.12.0/lib下hbase-0.94开头的那两个jar包删掉,然后从/home/hadoop/hbase-0.96.0-hadoop2/lib下hbase开头的包都拷贝过来。
find /home/hadoop/hbase-0.96.0-hadoop/lib -name "hbase*.jar"|xargs -i cp {} ./
基本的同步完成了,重点检查下zookeeper和protobuf的jar包是否和hbase保持一致,如果不一致,已hbase的为准提过到hive下即可。
由于我们采用本地mysql存储hive的源数据,所以要在本地安装mysql,并下载一个mysql的驱动包mysql-connector-java-3.1.12-bin.jar,放在hive的lib目录下
yum install mysql mysql-devele mysql-server -y
service mysqld start
启动Hive
hive --service metastore
hive --service hiveserver
查看所有启动端口
netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 19145/java
tcp 0 0 0.0.0.0:50070 0.0.0.0:* LISTEN 1646/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:9083 0.0.0.0:* LISTEN 19015/java
tcp 0 0 192.168.2.20:9000 0.0.0.0:* LISTEN 1646/java
tcp 0 0 192.168.2.20:9001 0.0.0.0:* LISTEN 1823/java
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN -
tcp 0 0 :::22 :::* LISTEN -
tcp 0 0 ::ffff:192.168.2.20:8088 :::* LISTEN 25621/java
tcp 0 0 ::ffff:192.168.2.20:8030 :::* LISTEN 25621/java
tcp 0 0 ::ffff:192.168.2.20:8031 :::* LISTEN 25621/java
tcp 0 0 ::ffff:192.168.2.20:8032 :::* LISTEN 25621/java
tcp 0 0 ::ffff:192.168.2.20:60000 :::* LISTEN 2159/java
tcp 0 0 ::ffff:192.168.2.20:8033 :::* LISTEN 25621/java
tcp 0 0 :::60010 :::* LISTEN 2159/java
本文出自 “hanyun.fang” 博客,转载请与作者联系!
原文地址:http://hanyun.blog.51cto.com/1060170/1600833