CentOS64位6.4下Hadoop2.7.1、Mysql5.5.46、Hive1.2.1、Spark1.5.0的集群环境部署

本文详细介绍了一个包含Hadoop、Hive和Spark的大数据集群环境搭建过程,涵盖了从环境准备到各组件配置的所有步骤。


部署环境:

CentOS 6.4 64bit

Hadoop2.7.1、Mysql5.5、Hive1.2.1、Scala2.11.7、Spark1.5.0

jdk1.7.0_79

 

主机IP:

master(namenode):10.10.4.115

slave1(datanode):10.10.4.116

slave2(datanode):10.10.4.117

 

一、环境准备及Hadoop部署:

(1)环境准备(host配置必须一致,否则可能导致错误):

[root@master ~]#vi  /etc/hosts

127.0.0.1       localhost

10.10.4.115     master.hadoop

10.10.4.116     slave1.hadoop

10.10.4.117     slave2.hadoop

 

(2)设置主机名:

[root@master ~]#vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=master.hadoop

 

(3)使其hostname即时生效:

可重启系统;

或者使用命令:

[root@master ~]#hostname master.hadoop

或者

[root@master ~]#echo  master.hadoop > /proc/sys/kernel/hostname 


(4)关闭防火墙服务:

[root@master ~]#service iptables stop

避免重启系统后iptables启动:

[root@master ~]#chkconfig iptables off

确认已关闭

[root@master ~]#chkconfig --list|grep iptables                                    

iptables        0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

chkconfig关闭iptables并不能永久关闭iptables,在重启系统后,level3下会自动启动iptables,这时候我们可以将iptables规则清空后保存,间接达到永久关闭的需求:

echo  "" > /etc/sysconfig/iptables

 

(5)关闭selinux

[root@master ~]#vi /etc/sysconfig/selinux

修改SELINUX=disabled

 

(6)卸载默认安装的openjdk(hadoop官方建议使用oracle版本jdk):

检查是否安装):

[root@master ~]#rpm -qa|grep openjdk

卸载安装的openjdk:

[root@master ~]#rpm -e openjdk

 

(7)下载并安装oracle  jdk1.7.0_79:

[root@master ~]#rpm -ivh jdk-7u79-linux-x64.rpm

 

(8)设置环境变量:

[root@master ~]#vi /etc/profile

##############JAVA#############################

export JAVA_HOME=/usr/java/jdk1.7.0_79

export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

export JRE_HOME=$JAVA_HOME/jre

export PATH=/usr/local/mysql/bin:$JAVA_HOME/bin:$PATH

################END############################

 

(9)使其生效:

[root@master ~]#source /etc/profile

 

(10)测试:

[root@master ~]#echo $JAVA_HOME

/usr/java/jdk1.7.0_79

 

(11)创建hadoop用户及群组:

[root@master ~]#useradd hadoop -p mangocity

 

(12)配置master免密码登录slave:

启用免密码登录ssh配置:

[root@master ~]#vi /etc/ssh/sshd_config

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

 

(13)设置完之后记得重启SSH服务,才能使刚才设置有效:

[root@master ~]#service sshd restart

 

#######以上设置slave服务器设置类同master##########

 

 

(14)在master上切换到hadoop用户,生成公钥:

[root@master ~]#su - hadoop

 

(15)生成公钥:

[hadoop@master ~]$ssh-keygen –t rsa –P ''

[hadoop@master ~]$more /home/hadoop/.ssh/id_rsa.pub

ssh-rsa AAAB3**************************************************7RbuPw== hadoop@master.hadoop

 

(16)把id_rsa.pub内容追加到授权的key:

[hadoop@master ~]$cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

 

(17)验证本地免密码登录:

验证之前确认/home/hadoop/.ssh/authorized_keys的权限为600,即只有hadoop用户拥有rw权限:

[hadoop@master ~]$ ll ./.ssh/authorized_keys 

-rw-------. 1 hadoop hadoop 402 11月 18 01:53 ./.ssh/authorized_keys

如权限不对,则会导致免密码登录失败;如权限非600,则需要修改其权限为600:

[hadoop@master ~]$chmod 600 ~/.ssh/authorized_keys

 

(18)测试验证:

[hadoop@master ~]$ssh 127.0.0.1

The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.

RSA key fingerprint is 31:45:00:ff:a7:80:23:f2:2a:86:7f:13:0d:bf:f0:d6.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.

hadoop@127.0.0.1's password:(第一次登录需要输入密码)

[hadoop@master ~]$exit

[hadoop@master ~]$ssh 127.0.0.1

Last login: Mon Nov 23 09:52:02 2015 from localhost(第二次登录不需要输入密码,说明本地登录验证成功)

[hadoop@master ~]$

 

(19)设置slave服务器ssh免密码登录:

此时slave服务器的hadoop的家目录下是没有.ssh目录和authorized_keys的,需要手动建立:

[hadoop@slave1 ~]#su -hadoop

[hadoop@slave1 ~]$ls -a

.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .gnome2     .viminfo

 

(20)手动建立目录、修改权限:

[hadoop@slave1 ~]$mkdir ./.ssh                                                     

[hadoop@slave1 ~]$chmod 700 ./.ssh                                            

                     

(21)手动创建文件、修改文件权限:

[hadoop@slave1 ~]$touch  ./.ssh/authorized_keys   

[hadoop@slave1 ~]$chmod 600  ./.ssh/authorized_keys 

[hadoop@slave1 ~]$ls -a      

.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .gnome2   .ssh  .viminfo

 

(22)将master服务器上hadoop用户建立的公钥文件id_rsa.pub复制到slave服务器hadoop用户目录:

[hadoop@slave1 ~]$scp hadoop@master.hadoop:/home/hadoop/id_rsa.pub /home/hadoop/   

 

(23)将master服务器hadoop用户的公钥id_rsa.pub内容追加到授权的authorized_keys文件中:

[hadoop@slave1 ~]$cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

以上步骤在slave2服务器重复操作一遍,更改/etc/ssh/sshd_config配置并重启sshd服务。

 

(24)测试验证master免密码登录slave服务器配置:

[hadoop@master ~]$ssh slave1.hadoop

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.

hadoop@127.0.0.1's password:(第一次登录需要输入密码)

[hadoop@slave1 ~]$exit

logout

Connection to slave1.hadoop closed.

[hadoop@master ~]$ ssh slave1.hadoop

Last login: Mon Nov 23 19:25:05 2015 from master.hadoop(第二次登录不需要输入密码,且当前用户已切换到slave1的hadoop,说明无密码登录验证成功)

[hadoop@slave1 ~]$ 

验证master免密码登录slave2服务器的过程和slave1相同。

 

部署hadoop2.7.1到master:

(1)下载并解压源码包:

[root@master ~]#tar -xvf hadoop-2.7.1.tar.gz 

[root@master ~]#cp -Rv  ./hadoop-2.7.1 /usr/local/hadoop/

 

(2)/usr/local/hadoop建立一些需要用到的目录:

[root@master ~]#mkdir -p /usr/local/hadoop/tmp   /usr/local/hadoop/dfs/data    /usr/local/hadoop/dfs/name

[root@master ~]#chown -R hadoop:hadoop /usr/local/hadoop/

 

(3)设置环境变量(slave服务器与master一致):

vi /etc/profile

##############Hadoop###########################

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

export PATH=/usr/local/mysql/bin:$HADOOP_HOME/bin:$PATH

################END############################

 

(4)使其生效:

source  /etc/profile生效

 

(5)切换到hadoop用户,修改hadoop相关配置,相关文件存放在$HADOOP_HOME/etc/hadoop/下,主要配置core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml这几个site文件:

[root@master ~]#su - hadoop

[hadoop@master ~]$ cd /usr/local/hadoop/etc/hadoop/[root@master ~]#su - hadoop

[hadoop@master ~]$ cd /usr/local/hadoop/etc/hadoop/

 

(6)修改env环境变量文件,将hadoop-env.sh,mapred-env.sh,yarn-env.sh末尾都添加上JAVA_HOME环境变量:

[hadoop@master hadoop]$vi hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.7.0_79   ###在文件末尾添加上这一行,另外2个文件相同方式修改

 

修改site文件,相关配置如下:

(7)core-site.xml:

[hadoop@master hadoop]$more core-site.xml

<configuration>

<property>

  <name>fs.defaultFS</name>

  <value>hdfs://master.hadoop:9000</value>            #因后期需要整合hive,这里要用hostname

</property>

<property>

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

  <value>file:/usr/local/hadoop/tmp</value>

  <description>Abasefor other temporary directories.</description>

</property>

</configuration>

 

(8)mapred-site.xml:

[hadoop@master hadoop]$more mapred-site.xml

<configuration>

  <property>

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

   <value>yarn</value>

</property>

</configuration>

 

(9)hdfs-site.xml:

[hadoop@master hadoop]$more hdfs-site.xml

<configuration>

<property>

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

  <value>10.10.4.115:9001</value>

</property>

<property>

  <name>dfs.replication</name>

  <value>2</value>                         

</property>

 

(10)yarn-site.xml

[hadoop@master hadoop]$more yarn-site.xml

<configuration>

<property>

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

      <value>10.10.4.115</value>

</property>

<property>

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

   <value>mapreduce_shuffle</value>

  </property>

  <property>

   <name>yarn.resourcemanager.address</name>

   <value>10.10.4.115:8032</value>

  </property>

  <property>

   <name>yarn.resourcemanager.scheduler.address</name>

   <value>10.10.4.115:8030</value>

  </property>

  <property>

   <name>yarn.resourcemanager.resource-tracker.address</name>

   <value>10.10.4.115:8035</value>

  </property>

  <property>

   <name>yarn.resourcemanager.admin.address</name>

   <value>10.10.4.115:8033</value>

  </property>

  <property>

   <name>yarn.resourcemanager.webapp.address</name>

   <value>10.10.4.115:8088</value>

  </property>

 

(11)添加datanode节点:

[root@master ~]#vi slaves

10.10.4.116                     #可以填IP地址也可以填hostname

10.10.4.116

 

(12)部署datanode节点:

复制hadoop目录至slave1和slave2节点,并修改目录权限:

[root@master ~]#scp -r /usr/local/hadoop/ root@slave1.hadoop:/usr/local/

[hadoop@slave1 ~]$chown -R hadoop:hadoop /usr/local/hadoop

[root@master ~]#scp -r /usr/local/hadoop/ root@slave2.hadoop:/usr/local/

[hadoop@slave2 ~]$chown -R hadoop:hadoop /usr/local/hadoop

 

 

(13)格式化namenode:

[root@master ~]#su - hadoop

[hadoop@master ~]$cd /usr/local/hadoop

[hadoop@master hadoop]$./bin/hdfs namenode -format  

当出现“successfully formatted”提示,说明格式化成功。

 

(14)启动hadoop:

[hadoop@master hadoop]$./sbin/start-all.sh

 

(15)检查master(namenode)进程状态:

[hadoop@master hadoop]$ jps

2697 Jps

7820 SecondaryNameNode

7985 ResourceManager

7614 NameNode

出现以上结果说明namenode节点服务正常运行

 

(16)检查slave(datanode)进程状态:

[hadoop@slave1 ~]$ jps

18342 DataNode

30450 Jps

18458 NodeManager

 

(17)显示以上结果说明datanode节点服务正常运行

还可以通过网页监控集群状态等信息:

http://master.hadoop:8088

wKiom1ZUM2vB9Bc9AALshzIeWAs689.jpg

http://master.hadoop:50070

wKiom1ZUM1fgsCyMAAVCWLBYRjg627.jpg

至此,hadoop集群安装完成,接下来是和Hive的整合。

 

二、Hive和Hadoop的整合(hive安装在namenode节点上):

(1)安装mysql 5.5(也可以用yum安装,这里使用源码安装):

安装依赖包:

[root@master ~]#yum -y install gcc gcc-c++ ncurses ncurses-devel cmake

 

(2)下载相应源码包:

[root@master ~]#wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.46.tar.gz

 

(3)添加mysql用户:

[root@master ~]#useradd -M -s /sbin/nologin mysql

 

(4)预编译:

[root@master ~]#tar -xzvf mysql-5.5.46.tar.gz

[root@master ~]#mkdir -p /data/mysql

[root@master ~]#cd mysql-5.5.46

[root@master mysql-5.5.46]#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  ###mysql5.5版本之后,configura改成cmake

-DMYSQL_DATADIR=/data/mysql \

-DSYSCONFDIR=/etc \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DENABLE_DTRACE=0 \

-DDEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DWITH_EMBEDDED_SERVER=1

 

(5)编译安装:

[root@master mysql-5.5.46]#make 

[root@master mysql-5.5.46]#make install

 

(6)启动脚本,设置开机自启动:

[root@master mysql-5.5.46]#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

[root@master mysql-5.5.46]#chmod +x /etc/init.d/mysqld

[root@master mysql-5.5.46]#chkconfig --add mysqld

[root@master mysql-5.5.46]#chkconfig mysqld on

 

(7)初始化数据库:

[root@master mysql-5.5.46]#/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

 

(8)设置密码:

[root@master mysql-5.5.46]#mysql -uroot -p     #第一次执行时,会要求输入root账户密码

 

(9)建立hive数据库:

mysql>create database hive;

 

(10)建立hive账户并授权访问mysql权限:

mysql>grant all privileges on *.* to 'hive'@'%' identified by '123456' with grant option;    #设置用户名密码及访问权限授权

mysql>flush privileges;

mysql>alter database hivemeta character set latin1;                                                               #更改字符集类型

mysql>flush privileges;

mysql>exit

 

(11)测试hive账户:

[root@master mysql-5.5.46]#mysql -uhive -pmangocity

mysql>

测试登录成功

 

安装Hive:

(1)设置全局环境变量(行首添加):

[root@master ~]#vi /etc/profile

#############Hive##############################

export HIVE_HOME=/usr/local/hive-1.2.1

export HIVE_CONF_DIR=$HIVE_HOME/conf

export HIVE_LIB=$HIVE_HOME/lib 

export CLASSPATH=$CLASSPATH:$HIVE_LIB

export PATH=$HIVE_HOME/bin/:$PATH

###################END#########################

 

(2)使其生效:

[root@master ~]#source /etc/profile

 

(3)下载安装Hive:

[root@master ~]#tar -xzvf apache-hive-1.2.1-bin.tar.gz

[root@master ~#mv ./apache-hive-1.2.1  /usr/local/hive-1.2.1

 

(4)改变hive目录属组:

[root@master ~]#chown -R hadoop:hadoop /usr/local/hive-1.2.1

su - hadoop

[hadoop@master ~]$cd /usr/local/hive-1.2.1/


(5)将下载好的mysql-connector-java-5.1.6-bin.jar复制到hive 的lib下面:

[hadoop@master hive-1.2.1]$cp  /home/hadoop/mysql-connector-java-5.1.37-bin.jar /usr/local/hive-1.2.1/lib/

 

(6)将$HIVE_HOME/lib下jline-2.12.jar复制到hadoop对应的目录中,替换掉低版本的jline-0.9.94.jar,看通过find查找出具体目录:

[hadoop@master hive-1.2.1]$find /usr/local/hadoop -name jline*.jar

[hadoop@master hive-1.2.1]$mv /usr/local/hadoop/share/hadoop/yarn/lib/jline-0.9.4.jar /usr/local/hadoop/share/hadoop/yarn/lib/jline-0.9.4.jar.bak  #备份旧版本jar包

[hadoop@master hive-1.2.1]$cp /usr/local/hive-1.2.1/lib/jline-2.12.jar /usr/local/hadoop/share/hadoop/yarn/lib/

 

(8)hive环境变量设置:

编辑$HIVE_HOME/bin/hive-config.sh,页尾添加:

[hadoop@master hive-1.2.1]$vi /usr/local/hive-1.2.1/bin/hive-config.sh

export JAVA_HOME=/usr/java/jdk1.7.0_79

export HADOOP_HOME=/usr/local/hadoop

export HIVE_HOME=/usr/local/hive-1.2.1

 

(9)hive环境变量设置:

编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh,页尾添加:

[hadoop@master hive-1.2.1]$vi  /usr/local/hadoop/etc/hadoop/hadoop-env.sh

export HIVE_HOME=/usr/local/hive-1.2.1

export HIVE_CONF_DIR=/usr/local/hive-1.2.1/conf

 

(10)设置hive与mysql连接等参数等文件的配置:

[hadoop@master hive-1.2.1]$vi  /usr/local/hive-1.2.1/conf/hive-site.xml

<configuration>

<property>    

  <name>hive.metastore.local</name>                                                    #远程mysql还是本地mysql,这里是本地

  <value>ture</value>

</property>

<property>

  <name>javax.jdo.option.ConnectionURL</name>

  <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true</value>     #JDBC相关参数

  <description>JDBC connect string for a JDBC metastore</description>

</property>

<property>

  <name>javax.jdo.option.ConnectionDriverName</name>

  <value>com.mysql.jdbc.Driver</value>

  <description>Driver class name for a JDBC metastore</description>    

</property>

<property>

  <name>javax.jdo.option.ConnectionUserName</name>

  <value>hive</value>

  <description>username to use against metastore database</description>                   #连接mysql所用账户

</property>

<property>

  <name>javax.jdo.option.ConnectionPassword</name>

  <value>123456</value>

  <description>password to use against metastore database</description>                  #连接mysql所用账户密码

</property>

</configuration>

 

(11)启动Hive:

[hadoop@master hive-1.2.1]$./bin/hive --service metastore &              #启动metastore,置于后台运行

[hadoop@master hive-1.2.1]$./bin/hive --service hiveserver &              #启动hiveserver,置于后台运行

 

(12)测试Hive,执行jps,会查看到有一个Runjar进程在运行:

[hadoop@master hive-1.2.1]$jps

5640 NameNode

6013 ResourceManager

5847 SecondaryNameNode

6490 RunJar

13978 Jps

 

(13)测试hive和hadoop及MySQL的整合:

[hadoop@master hive-1.2.1]$ ./bin/hive

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/usr/local/spark-1.5.0/lib/spark-assembly-1.5.0-hadoop2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/usr/local/spark-1.5.0/lib/spark-assembly-1.5.0-hadoop2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

15/11/24 10:12:24 WARN conf.HiveConf: HiveConf of name hive.metastore.local does not exist

Logging initialized using configuration in jar:file:/usr/local/hive-1.2.1/lib/hive-common-1.2.1.jar!/hive-log4j.properties

hive> show databases;

OK

default

Time taken: 1.878 seconds, Fetched: 1 row(s)

hive> show tables;

OK

Time taken: 2.025 seconds, Fetched: 1 row(s)

hive> create table test(name string, age int);                #尝试建立一张表

OK

Time taken: 2.952 seconds

hive> desc test;

OK

name                    string                                     

age                     int                                        

Time taken: 0.225 seconds, Fetched: 2 row(s)

hive> exit;

 

至此,hadoop集群与hive的整合完成,接下来是和spark的整合。

 

三丶Spark和Hadoop的整合

安装Scala:

 

(1)将压缩包解压至/usr/scala 目录:

[root@master ~]#tar -zxvf .//scala-2.11.7.tgz 

[root@master ~]#mv ./scala-2.11.7 /usr/local/scala-2.11.7

 

 

(2)目录授权给hadoop用户:

[root@master ~]#chown -R hadoop:hadoop /usr/local/scala-2.11.7

 

(3)设置环境变量:

[root@master ~]#vi /etc/profile

追加如下内容:

#############Scale#############################

export SCALA_HOME=/usr/local/scala-2.11.7

export PATH=$PATH:$SCALA_HOME/bin

####################END########################

 

(4)使其生效:

[root@master ~]#source /etc/profile

 

(5)测试Scala是否安装配置成功:

[hadoop@master ~]$ scala -version

Scala code runner version 2.11.7 -- Copyright 2002-2013, LAMP/EPFL

 

安装Spark

 

官网下载spark1.5.0:spark-1.5.0-bin-hadoop2.6.tgz

 

(1)将压缩包解压至/usr/local目录: 

[root@master ~]#tar -zxvf ./spark-1.5.0-bin-hadoop2.6.tgz 

[root@master ~]#mv  ./spark-1.5.0 /usr/local/spark-1.5.0

 

(2)目录授权给hadoop用户:

[root@master ~]#chown -R hadoop:hadoop /usr/local/spark-1.5.0

 

(3)设置环境变量:

[root@master ~]#vi  /etc/profile

追加如下内容

############Spark##############################

export SPARK_HOME=/usr/local/spark-1.5.0

export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

#################END###########################

 

(4)使之生效

[root@master ~]#source /etc/profile

 

(5)测试Spark是否安装配置成功:

[root@master ~]#spark-shell --version

Welcome to

      ____              __

     / __/__  ___ _____/ /__

    _\ \/ _ \/ _ `/ __/  '_/

   /___/ .__/\_,_/_/ /_/\_\   version 1.5.0

      /_/

 

Type --help for more information.

 

(6)编辑/usr/local/hadoop/etc/hadoop/hadoop-env.sh,添加如下内容:

export SPARK_MASTER_IP=10.10.4.115

export SPARK_WORKER_MEMORY=1024m

 

(7)更改spark相关配置:

su - hadoop

cd /usr/local/spark.1.5.0 


(8)复制模板并编辑spark-env.sh ,配置相关环境变量

[hadoop@master spark-1.5.0]$mv ./conf/spark-env.sh.template  ./conf/spark-env.sh 

[hadoop@master spark-1.5.0]$vi ./conf/spark-env.sh 

export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop

export SCALA_HOME=/usr/local/scala-2.11.7

export JAVA_HOME=/usr/java/jdk1.7.0_79

export SPARK_MASTER_IP=10.10.4.115

export SPARK_WORKER_MEMORY=1024m

 

(9)配置slave节点服务器:

[hadoop@master spark-1.5.0]$vi ./conf/slaves

# A Spark Worker will be started on each of the machines listed below.

slave1.hadoop

slave2.hadoop

 

(10)切换到root用户,将scala和spark以及相关环境变量配置复制到datanode节点,即salve1和slave2服务器:

[root@master ~]#scp -r /usr/local/scala-2.11.7  root@slave1.hadoop:/usr/local/scala-2.11.7 

[root@master ~]#scp -r /usr/local/spark.1.5.0 root@slave1.hadoop:/usr/local/spark.1.5.0

登录到slave1服务器,将刚才复制的两个目录授权给hadoop:

chown -R hadoop:hadoop /usr/local/scala-2.11.7  /usr/local/spark.1.5.0

配置slave1服务器/etc/profile,/usr/local/hadoop/etc/hadoop/hadoop-env.sh,使其和master服务器保持一致,并使其生效。

 

 

[root@master ~]#scp -r /usr/local/scala-2.11.7  root@slave2.hadoop:/usr/local/scala-2.11.7 

[root@master ~]#scp -r /usr/local/spark.1.5.0 root@slave2.hadoop:/usr/local/spark.1.5.0

登录到slave2服务器,将刚才复制的两个目录授权给hadoop:

chown -R hadoop:hadoop /usr/local/scala-2.11.7  /usr/local/spark.1.5.0

配置slave2服务器/etc/profile,/usr/local/hadoop/etc/hadoop/hadoop-env.sh,使其和master服务器保持一致,并使其生效。

 

(11)启动spark和测试:

[hadoop@master spark-1.5.0]$./sbin/start-all.sh

 

可以通过jps查看namenode节点,会有一个Master进程在运行:

[hadoop@master spark-1.5.0]$jps

5640 NameNode

6013 ResourceManager

5847 SecondaryNameNode

6897 Master

15164 Jps

6490 RunJar

 过jps查看datanode节点,会有一个Worker进程在运行:

[hadoop@slave1 ~]$ jps


3982 Jps


31810 DataNode


32136 Worker


31928 NodeManager



也可以通过网页监控到相关信息:

http://master.hadoop:8080

wKiom1ZUMwKiUOvPAAONkcOyJZI955.jpg

 

至此,整个Hdoop、Hive、Spark集群环境部署完成。

 本文出自 “疯子的守望” 博客,请务必保留此出处http://mrthanks.blog.51cto.com/1764573/1716486

<think>我们正在CentOS7上部一个包含Hadoop集群HiveSpark集群MySQL的集成环境。以下是分步指南:注意:以下步骤假设使用root用户或具有sudo权限的用户操作。建议使用普通用户(如hadoop)操作,但需要配置sudo权限。总体步骤:1.系统准备(包括创建用户、安装Java等)2.安装Hadoop集群(包括配置和启动)3.安装MySQL(作为Hive的元数据存储)4.安装Hive(配置使用MySQL存储元数据)5.安装Spark集群(配置集成到Hadoop)引用说明:我们将参考提供的引用片段,并适当引用。详细步骤:##1.系统准备###1.1创建用户(可选但推荐)创建一个专门的用户(如hadoop)来运行这些服务,避免使用root。引用[2]中提到:useraddhadooppasswdhadoop#设置密码然后给这个用户配置sudo权限(如果需要):visudo添加:`hadoopALL=(ALL)ALL`###1.2安装JavaHadoopHiveSpark都需要Java环境。这里安装OpenJDK1.8(或OracleJDK1.8)。引用[2]中提到安装OpenJDK1.8:#查看Java版本java-version如果未安装,则安装:yuminstall-yjava-1.8.0-openjdkjava-1.8.0-openjdk-devel设置环境变量(在/etc/profile或用户profile中):exportJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdkexportPATH=$PATH:$JAVA_HOME/bin然后执行:`source/etc/profile`###1.3配置主机名和hosts文件确保集群中每个节点有唯一的主机名,并在所有节点的/etc/hosts文件中配置IP和主机名的映射。例如,在master节点上:hostnamectlset-hostnamemaster在slave1节点上:hostnamectlset-hostnameslave1编辑所有节点的/etc/hosts文件:<master-ip>master<slave1-ip>slave1...###1.4配置SSH免密登录在master节点上生成密钥,并将公钥复制到所有节点(包括自己):ssh-keygen-trsassh-copy-idhadoop@masterssh-copy-idhadoop@slave1...##2.安装Hadoop集群###2.1下载并解压Hadoop引用[2]中下载Hadoop3.3.6:wgethttps://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gztar-zxvfhadoop-3.3.6.tar.gzmvhadoop-3.3.6/opt/hadoop#可以移动到目标目录,这里假设/opt/hadoop###2.2配置环境变量在hadoop用户的~/.bashrc(或/etc/profile)中添加:exportHADOOP_HOME=/opt/hadoopexportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin同时,引用[4]中提到,需要将JAVA_HOME配置到Hadoop的配置文件中:编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加:exportJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk#根据实际路径调整同样,编辑$HADOOP_HOME/etc/hadoop/yarn-env.sh,添加:exportJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk###2.3配置Hadoop修改以下配置文件(在$HADOOP_HOME/etc/hadoop目录下):(1)core-site.xml<configuration><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><property><name>hadoop.tmp.dir</name><value>/opt/hadoop/tmp</value></property></configuration>(2)hdfs-site.xml<configuration><property><name>dfs.replication</name><value>2</value><!--副本数,根据节点数调整--></property><property><name>dfs.namenode.name.dir</name><value>/opt/hadoop/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>/opt/hadoop/dfs/data</value></property></configuration>(3)mapred-site.xml<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>(4)yarn-site.xml<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>master</value></property></configuration>(5)workers文件(在Hadoop3.x中,该文件名为workers)将所有的数据节点主机名写入:slave1slave2###2.4启动Hadoop集群在master节点上:hdfsnamenode-format#格式化(首次启动)start-dfs.shstart-yarn.sh验证:jps命令在master上应看到NameNode,ResourceManager等,在slave上应看到DataNode,NodeManager。##3.安装MySQL我们将安装MySQL5.7(或8.0)作为Hive的元数据存储。###3.1安装MySQL引用[3]中安装MySQL5.7(使用rpm包),但我们可以使用yum安装:#下载并安装MySQL官方的YumRepositorywgethttps://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmrpm-ivhmysql57-community-release-el7-11.noarch.rpmyuminstall-ymysql-community-server#启动MySQL服务systemctlstartmysqldsystemctlenablemysqld###3.2配置MySQL获取初始密码:grep'temporarypassword'/var/log/mysqld.log运行安全设置:mysql_secure_installation登录MySQLmysql-uroot-p创建Hive的元数据库和用户:CREATEDATABASEmetastore;CREATEUSER'hive'@'%'IDENTIFIEDBY'your_password';GRANTALLPRIVILEGESONmetastore.*TO'hive'@'%';FLUSHPRIVILEGES;注意:如果Hive运行在远程主机,需使用'%',如果本地则用'localhost'。##4.安装Hive###4.1下载并解压Hive下载Hive(例如3.1.2):wgethttps://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gztar-zxvfapache-hive-3.1.2-bin.tar.gzmvapache-hive-3.1.2-bin/opt/hive配置环境变量:exportHIVE_HOME=/opt/hiveexportPATH=$PATH:$HIVE_HOME/bin###4.2配置Hive进入$HIVE_HOME/conf目录:(1)创建hive-site.xml,内容如下(根据你的MySQL配置修改):<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://master:3306/metastore?createDatabaseIfNotExist=true</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>your_password</value></property></configuration>(2)将MySQL驱动包(mysql-connector-java-5.1.49.jar)复制到$HIVE_HOME/lib目录下。###4.3初始化元数据库运行:schematool-dbTypemysql-initSchema###4.4启动Hive运行hive命令即可进入CLI。##5.安装Spark集群注意:Spark需要运行在Hadoop集群之上。###5.1下载并解压Spark下载Spark(例如2.4.4,与引用[1]中的版本一致):wgethttps://archive.apache.org/dist/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgztar-zxvfspark-2.4.4-bin-hadoop2.7.tgzmvspark-2.4.4-bin-hadoop2.7/opt/spark配置环境变量:exportSPARK_HOME=/opt/sparkexportPATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin###5.2配置Spark进入$SPARK_HOME/conf目录:(1)复制模板:cpspark-env.sh.templatespark-env.shcpslaves.templateslaves(2)配置spark-env.sh(添加):exportJAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdkexportHADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexportSPARK_MASTER_HOST=master#设置master节点(3)配置slaves文件(添加所有worker节点):slave1slave2###5.3启动Spark集群sbin/start-all.sh#这会启动Master和Worker验证:访问master:8080查看Spark集群状态。###5.4集成Hive为了让Spark能够访问Hive的元数据,需要将Hive的配置文件hive-site.xml复制到$SPARK_HOME/conf/目录下。然后重启Spark集群。现在,你可以通过spark-sql或pyspark访问Hive表。注意:以上步骤为基本部流程,实际环境中可能需根据具体需求调整配置(如内存、路径等)。##总结完成以上步骤后,我们搭建了一个包含Hadoop集群(HDFS+YARN)、Hive(使用MySQL存储元数据)、Spark集群(Standalone模式)的集成环境。注意:在生产环境中,还需要考虑安全性、性能调优、高可用等。§§相关问题§§1.Hadoop集群中常见问题有哪些?2.Hive如何配置使用远程MySQL数据库?3.Spark如何集成Hive以实现数据仓库操作?4.如何验证整个集成环境的正确性?</think>### CentOS 7 集成环境部指南:Hadoop集群 + Hive + Spark集群 + MySQL 以下是分步部教程,包含关键配置和注意事项: --- #### **1. 系统准备** **1.1 创建专用用户** ```bash useradd hadoop # 创建用户 passwd hadoop # 设置密码 usermod -aG wheel hadoop # 添加sudo权限 ``` **1.2 安装Java环境** ```bash yum install -y java-1.8.0-openjdk-devel echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> /etc/profile source /etc/profile # 验证:java -version ``` **1.3 配置SSH免密登录** ```bash ssh-keygen -t rsa ssh-copy-id localhost # 所有节点互信 ssh-copy-id slave1 ssh-copy-id slave2 ``` --- #### **2. Hadoop集群** **2.1 下载安装Hadoop 3.3.6** ```bash wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz tar -zxvf hadoop-3.3.6.tar.gz -C /opt/ mv /opt/hadoop-3.3.6 /opt/hadoop ``` **2.2 核心配置** 编辑 `$HADOOP_HOME/etc/hadoop/` 下的文件: - **core-site.xml**: ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration> ``` - **hdfs-site.xml**: ```xml <property> <name>dfs.replication</name> <value>2</value> <!-- 副本数 --> </property> ``` - **workers文件**: ``` slave1 slave2 ``` **2.3 集成Java环境** ```bash echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> $HADOOP_HOME/etc/hadoop/yarn-env.sh ``` **2.4 启动集群** ```bash hdfs namenode -format # 首次需格式化 start-dfs.sh && start-yarn.sh ``` --- #### **3. MySQL安装(Hive元数据库)** **3.1 安装MySQL 5.7** ```bash wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm yum install -y mysql-community-server systemctl start mysqld ``` **3.2 创建Hive元数据库** ```sql CREATE DATABASE metastore; CREATE USER 'hive'@'%' IDENTIFIED BY '密码'; GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'%'; FLUSH PRIVILEGES; ``` --- #### **4. Hive安装与配置** **4.1 下载Hive 3.1.2** ```bash wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/ ``` **4.2 配置hive-site.xml** ```xml <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://master:3306/metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> </configuration> ``` **4.3 初始化元数据库** ```bash $HIVE_HOME/bin/schematool -dbType mysql -initSchema ``` --- #### **5. Spark集群** **5.1 安装Spark 2.4.4** ```bash wget https://archive.apache.org/dist/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz tar -zxvf spark-2.4.4-bin-hadoop2.7.tgz -C /opt/ ``` **5.2 关键配置** - **spark-env.sh**: ```bash export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop ``` - **slaves文件**: ``` slave1 slave2 ``` **5.3 启动Spark集群** ```bash /opt/spark/sbin/start-all.sh ``` --- #### **6. 环境验证** 1. **Hadoop**:访问 `http://master:9870` 查看HDFS状态 2. **Spark**:运行示例任务: ```bash /opt/spark/bin/spark-submit --class org.apache.spark.examples.SparkPi \ /opt/spark/examples/jars/spark-examples_2.11-2.4.4.jar 10 ``` 3. **Hive**:执行 `hive -e "SHOW DATABASES;"` --- #### **关键注意事项** 1. **防火墙配置**:开放端口 9000(HDFS)、8080(Spark)、3306(MySQL) 2. **路径权限**:确保 `/opt` 目录属主为 `hadoop` 用户 3. **版本兼容性**:Hadoop 3.3.6 + Spark 2.4.4 + Hive 3.1.2 已验证兼容 4. **元数据备份**:定期备份MySQL中的 `metastore` 数据库 > 部问题定:查看日志目录 > - Hadoop: `$HADOOP_HOME/logs/` > - Spark: `$SPARK_HOME/logs/` > - Hive: `/tmp/hive.log`
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值