Hadoop+Hive+Mysql安装文档
软件版本
redhat enterprise server5.5 | 64 |
Hadoop | 1.0.0 |
Hive | 0.8.1 |
Mysql | 5 |
Jdk | 1.6 |
整体构架
共有7台机器,做4个数据节点,将name节点、jobtracker和secondaryname都分开,各机器分工如下
机器ip | 主机名 | 用途 | 备注 |
123.456.789.30 | Master.hadoop | Name节点 | 主节点 |
123.456.789.31 | Slave1.hadoop | 数据节点1 |
|
123.456.789.32 | Slave2.hadoop | 数据节点2 |
|
123.456.789.33 | Slave3.hadoop | 数据节点3 |
|
123.456.789.34 | Slave4.hadoop | 数据节点4 |
|
123.456.789.35 | Job.hadoop | Jobtracker |
|
123.456.789.36 | Sec.hadoop | 第二名称节点 |
|
所需的安装包
hadoop-1.0.0-bin.tar.gz
mysql-5.1.52.tar.gz
jdk-6u31-linux-x64.bin
hive-0.8.1.tar.gz
准备工作(使用root用户)
Hosts 文件配置
在所有机器上配置 /etc/hosts 文件 (一个都不能少必须所有机器全做)
vi /etc/hosts
添加如下行:
123.456.789.30 master.hadoop
123.456.789.31 slave1.hadoop
123.456.789.32 slave2.hadoop
123.456.789.33 slave3.hadoop
123.456.789.34 slave4.hadoop
123.456.789.35 job.hadoop
123.456.789.36 sec.hadoop
修改各个主机的hostname
Linux 安装好后,其默认的名是 localhost。修改 /etc/sysconfig/network 配置文件
vi /etc/sysconfig/network
如:123.456.789.30机器上,修改为master.hadoop
123.456.789.31机器上,修改为 slave1.hadoop
特别说明:一个都不能少必须所有机器全做
建立 hduser 用户和 hadoop 组
groupadd hadoop
useradd -g hadoop hduser
passwd hduser
上传文件
在/home/hduser下创建文件夹tools, 使用hduser用户将所有的安装包都ftp到这个文件夹
配置免验证
为避免hadoop运行中需要密码,因此从主节点和JobTracker到机器机器需要做ssh免密码验证
在主节点使用hduser用户执行
ssh-keygen -t rsa -P ""
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh localhost
ssh master.hadoop
将密钥创送给其他主机
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave1.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave2.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave3.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@slave4.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@job.hadoop
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@sec.hadoop
特别说明:执行ssh-copy-id的时候需要输入yes 和 该主机的密码。
安装hadoop(使用hduser用户)
在主机安装jdk及解压其他软件
A 切换到/home/hduser/tools下,解压jdk
./jdk-6u31-linux-x64
特别说明:如果提示权限不足,就赋权吧
chmod 777 *
B 解压hadoop,并改名
tar -xvf hadoop-1.0.0-bin.tar
mv hadoop1.0.0 hadoop
C 解压mysql
tar –xvf mysql-5.1.52.tar.gz
D 解压Hive,并改名
tar –xvf hive-0.8.1.tar.gz
mv hive-0.8.1 hive
修改配置文件
#vi /etc/profile 添加环境变量
export JAVA_HOME=/home/hduser/jdk1.6.0_30/
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HADOOP_HOME=/home/hduser/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
export HIVE_HOME=/home/hduser/hive
export PATH=$HIVE_HOME/bin:$PATH
特别说明:在所有机器上添加
执行#source /etc/profile ,使环境变量立即生效
修改hadoop-env.sh
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
如下修改:
# The java implementation to use. Required.
export JAVA_HOME=/home/hduser /jdk1.6.0_30
export HADOOP_PID_DIR=/home/hduser/pids
创建所需文件夹
在/home/hduser/hadoop下创建文件夹tmp
mkdir /home/hduser/hadoop/tmp
上传配置文件
将hadoop_conf文件夹中所有的文件上传到/home/hduser/hadoop/etc/hadoop文件夹下覆盖原有的。
修改hdfs-site.xml
增加:
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
修改core-site.xml
修改属性hadoop.tmp.dir值为:/home/hduser/hadoop/tmp
修改属性dfs.http.address值为:sec.hadoop:50070 (指向第二名称节点)
修改属性dfs.hosts.exclude 值为:/home/hduser/hadoop/etc/hadoop/excludes (用于删除节点的)
修改mapred-site.xml
修改属性mapred.job.tracker值为:job.hadoop:54311 (指向jobtracker)
修改masters
将内容修改为:sec.hadoop
修改slaves文件
将内容修改为:
slave1.hadoop
slave2.hadoop
slave3.hadoop
slave4.hadoop
将jdk以及hadoop传送到其他主机
scp –r jdk1.6.0_31 hduser@slave1.hadoop:/home/hduser
scp -r jdk1.6.0_31 hduser@slave2.hadoop:/home/hduser
scp -r jdk1.6.0_31 hduser@slave3.hadoop:/home/hduser
scp -r jdk1.6.0_31 hduser@slave4.hadoop:/home/hduser
scp -r jdk1.6.0_31 hduser@job.hadoop:/home/hduser
scp -r jdk1.6.0_31 hduser@sec.hadoop:/home/hduser
scp -r hadoop hduser@slave1.hadoop:/home/hduser
scp -r hadoop hduser@slave2.hadoop: /home/hduser
scp -r hadoop hduser@slave3.hadoop: /home/hduser
scp -r hadoop hduser@slave4.hadoop: /home/hduser
scp -r hadoop hduser@job.hadoop: /home/hduser
scp -r hadoop hduser@sec.hadoop: /home/hduser
启动hadoop
因为现在测试是不能直接使用start-all,因此启动顺序为(均在主节点上执行)
a.使用hduser登录主节点,进入hadoop/sbin目录,启动name节点
./hadoop-daemon.sh start namenode
b.启动数据节点(只是启动各个数据节点的datanode)
./start-dfs.sh
c.登录job.hadoop启动jobtracker(同时会启动各个节点的tasktracker)
./start-mapred.sh
关闭顺序(在主节点sbin下执行)
关闭datanode及namenode
./stop-dfs.sh
登陆job主机(关闭tasktracker及jobtracker)
./stop-mapred.sh
启动时可能会报权限不足的问题,需要把每台主机上 hadoop/sbin下所有文件赋权。
验证启动效果
查看各个主机上运行的内容是否正常,使用jps,按照当前规划结果应该如下:
节点名称 | 运行内容 | 备注 |
主节点 | Namenode |
|
数据节点 | DataNode,taskTracker |
|
Job节点 | JobTracker |
|
第二名称节点 | Secondaryname |
|
特别说明:也可以查看hadoop/logs/下的日志文件查看启动
安装mysql(使用root)
1.切换到mysql解压目录
cd /home/hduser/tools/mysql
2../configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/data/mysql
注意修改localstatedir为你想要将数据库文件所放的位置
3.make
4.make install
5.make clean
6.groupadd mysql
7.useradd -g mysql mysql (第一个mysql是组,第二个mysql是用户)
8.cd /usr/local/mysql
9.cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
10.#bin/mysql_install_db --user=mysql #建立基本数据库,必须指明为mysql用户,只有这一步才能在usr/local/mysql下出现var目录
# bin/mysqld_safe --user=mysql &
11. bin/mysqladmin -u root password oracle
12.启动和关闭mysql(可跳过)
启动mysql
#bin/mysqld_safe &或/usr/local/mysql/share/mysql/mysql.server start 启动mysql
停止mysql方法1
#/usr/local/mysql/share/mysql/mysql.server stop 停止mysql
关闭mysql方法2
#ps -aux|grep mysql查看进程
#kill id号 ----这是杀mysql进程的,id号是在查看mysql进程里面看的到。
13.将mysql注册为服务
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
用root用户把mysql添加到系统服务中。
#/sbin/chkconfig --add mysqld 添加mysql为服务
#/sbin/chkconfig --del mysqld 删除mysql服务
/sbin/service mysqld restart #重新启动服务查看是否生效
/sbin/chkconfig --list mysqld #查看是否345运行级别都打开mysql
14.为Hive建立相应的MySQL帐号,并赋予足够的权限
进入root /usr/local/mysql/bin下执行:./mysql -u root -p;
创建hive数据库:create database hive;
创建用户hive,它只能从localhost连接到数据库并可以连接到wordpress数据库:grant all on hive.* to hive@localhost identified by 'oracle'。
安装hive(hduser)
1. 修改hive目录下/conf/hive-env.sh.template中的HADOOP_HOME为实际的Hadoop安装目录:/home/hduser/hadoop
2.在hive下创建文件夹tmp和warehouse
mkdir /home/hduser/hive/tmp
mkdir /home/hduser/hive/warehouse
3. 在HDFS中创建/tmp和/user/hive/warehouse并设置权限:
hadoop fs -mkdir /home/hduser/hive/tmp
hadoop fs -mkdir /home/hduser/hive/warehouse
hadoop fs -chmod g+w /home/hduser/hive/tmp
hadoop fs -chmod g+w /home/hduser/hive/warehouse
4.将hive_conf中的配置文件拷贝到/home/hduser/hive/conf中
5.修改hive-site.xml文件
修改属性hive.metastore.warehouse.dir值为:/home/hduser/hive/warehouse
修改属性hive.exec.scratchdir值为:/home/hduser/hive/tmp
6.把MySQL的JDBC驱动包mysql-connector-java-5.0.7-bin.jar复制到Hive的lib目录下。
7.启动Hive,执行show tables;
8.如第七步无异常,就成功一大半了,建几个表,加载些数据测试
hive>
create table test_src
(
ACCOUNT1 string,
url string)
row format delimited fields terminated by '\|' ;
touch a.txt
123412342|http://www.sohu.com
454534534|http://qww.cocm.ccc
hive>
load data local inpath '/data/myfile/a.txt' into table test_src;
目前采用的是最基本安装,未设置任何参数,生产需要时还需配置相关参数
sqoop安装(hduser用户)
1.解压sqoop1.4.tar.gz
2.重新命名为sqoop
3.修改SQOOP的文件bin/configure-sqoop,注释掉所有关于hbase和zookeeper
4.将ojdbc6.jar 和 hadoop-core-1.0.0.jar 拷贝到sqoop/lib下
5.增加环境变量
export SQOOP_HOME=XXXX
export PATH=$SQOOP_HOME/bin:$PATH