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