Hadoop+hive+zookeeper+hbase+spark+kylin+mahout集群搭建

引言:之前大四的时候觉得大数据很火,就尝试搭建了一个单节点的hadoop玩过,最近工作慢慢有点空闲就开始搭建3节点的大数据平台,现在整个大数据的生态圈已经完善了很多了,花了一个星期终于搭建好了,各种组件玩起来简直不要太爽。


大数据集群配置.png

一、装虚拟机vm,集群初始配置
1、下载vm和ubuntu镜像,然后复制两份ubuntu,每台ubuntu都创建一个hadoop用户

sudo useradd -m hadoop -s /bin/bash  #创建hadoop用户,并使用/bin/bash作为shell
sudo passwd hadoop                   #为hadoop用户设置密码,之后需要连续输入两次密码
sudo adduser hadoop sudo             #为hadoop用户增加管理员权限
su - hadoop                          #切换当前用户为用户hadoop
sudo apt-get update                  #更新hadoop用户的apt,方便后面的安装

2、 更改主机名

vim /etc/sysconfig/network 

将localhost.localdomain修改为你要更改的名称,主机这里改为master,其他改为slave1,slave2

HOSTNAME=master

注意:重启才生效

3、做主机和IP的关系映射

vim /etc/hosts

添加下面字段

172.16.0.30 master
172.16.0.31 slave1
172.16.0.32 slave2
修改host.png

注意:一定在每一台机器都如此修改,可以在每台机器都用vim修改,也可以在一台机器修改完再用命令传送过去
命令:

scp -r /etc/hosts hadoop@172.16.0.31:/etc

4、安装ssh,设置SSH无密码登陆

sudo apt-get install openssh-server   #安装SSH server
ssh localhost                         #登陆SSH,第一次登陆输入yes
exit                                  #退出登录的ssh localhost
cd ~/.ssh/                            #如果没法进入该目录,执行一次ssh localhost
ssh-keygen -t rsa  

输入完 ssh-keygen -t rsa 需要连续敲击三次回车,如下图:


ssh三次回车.png

然后出现下图就成功了


成功的图.jpg

新建authorized_keys文件

touch  /root/.ssh/authorized_keys

A、将集群其他机器的rsa文件传送过来

scp ~/.ssh/id_rsa.pub hadoop@master:~/

此命令表示将文件复制到master主机上,命令在其他机器中输入,非master上。

B、在master上将密匙写入到authorized_keys中:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

A和B操作是每一台机器传密匙过来就写入到本机中。
(在slave1上将master和slave2的密匙传过来就写入。)
这第4小节的操作全部在其他机器照样操作。
测试:
ssh slave1


0.png

5、集群同步时间
时间同步可参照《zookeeper集群同步时间设置》来设置

二、hadoop集群搭建
1、编辑profile文件

sudo vim /etc/profile
source /etc/profile  #更新修改

将下列配置加到底部:

export JAVA_HOME=/usr/local/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/usr/local/hive/lib

export SCALA_HOME=/usr/local/scala
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:$PATH

export  SPARK_HOME=/usr/local/spark
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:$PATH

export  ZK_HOME=/usr/local/zookeeper
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${ZK_HOME}/bin:$PATH

export HBASE_HOME=/usr/local/hbase
export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:$HBASE_HOME/bin:$PATH

export KYLIN_HOME=/usr/local/kylin
export PATH=$KYLIN_HOME/bin:$PATH
export hive_dependency=/usr/local/hive/conf:/usr/local/hive/lib/*:/usr/local/hive/hcatalog/share/hcatalog/hive-hcatalog-core-2.3.3.jar

export PHOENIX_HOME=/usr/local/phoenix
export PATH=$PATH:$PHOENIX_HOME/bin
export PHOENIX_CLASSPATH=$PHOENIX_HOME

export MAHOUT_HOME=/usr/local/mahout
export MAHOUT_CONF_DIR=$MAHOUT_HOME/conf
export PATH=$PATH:$MAHOUT_HOME/conf:$MAHOUT_HOME/bin

2、java配置
首先卸载ubuntu自带openjdk,再安装oracle官方的jdk
卸载;

sudo apt-get remove openjdk*

去oracle官网下载linux版本的jdk,然后解压、重命名、移动:

tar  -xvf   jdk-8u144-linux-x64.tar.gz   #解压
mv  jdk1.8.0_144 java                        #重命名
mv  java /usr/local                              #移动

每台机器都要配置java
3、hadoop安装配置
3.1、修改 core-site.xml
core-site.xml在/usr/local/hadoop/etc/hadoop文件夹里

<configuration>
       <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:8020</value>
       </property>
       <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/home/hadoop/tmp</value>
               <description>Abase for other temporary directories.</description>
       </property>
        <property>
               <name>hadoop.proxyuser.hadoop.hosts</name>
               <value>*</value>
       </property>
       <property>
               <name>hadoop.proxyuser.hadoop.groups</name>
               <value>*</value>
       </property>
</configuration>

3.2配置hadoop-env.sh
将export JAVA_HOME=${JAVA_HOME}修改为绝对地址:
export JAVA_HOME=/usr/local/java
3.3 配置 hdfs-site.xml

<configuration>
       <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>master:9001</value>
       </property>
     <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/home/hadoop/dfs/name</value>
       </property>
      <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/home/hadoop/dfs/data</value>
       </property>
       <property>
               <name>dfs.replication</name>
               <value>3</value>
        </property>
        <property>
                 <name>dfs.webhdfs.enabled</name>
                  <value>true</value>
         </property>
</configuration>

3.4 配置mapred-site.xml
如果没有 mapred-site.xml 该文件,就复制mapred-site.xml.template文件并重命名为mapred-site.xml

<configuration>
          <property>
        <name>mapreduce.framework.name</name>
                <value>yarn</value>
           </property>
          <property>
                  <name>mapreduce.jobhistory.address</name>
                  <value>master:10020</value>
          </property>
          <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>master:19888</value>
       </property>
</configuration>

3.5 配置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>master:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>master:8030</value>
       </property>
       <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
             <value>master:8031</value>
      </property>
      <property>
              <name>yarn.resourcemanager.admin.address</name>
               <value>master:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>
</configuration>

3.6 修改slaves

slave1 
slave2

3.7传送hadoop到其他机器

sudo scp -r /usr/local/hadoop hadoop@slave1:~/
sudo scp -r /usr/local/hadoop hadoop@slave2:~/

在每一台机器再用命令移动到各自的 /usr/local/目录下

sudo mv hadoop /usr/local/

3.8 hadoop启动
切换到/opt/hadoop/hadoop2.8/bin目录下输入
格式化namenode

./hdfs  namenode  -format

初始化成功之后,切换到/opt/hadoop/hadoop2.8/sbin
启动hadoop 的hdfs和yarn

start-dfs.sh
start-yarn.sh

然后可以在浏览器输入: ip+50070或8088 端口查看


50070.png

hadoop.png

4、 配置Hive+Mysql
安装mysql
sudo apt-get install mysql-server
但是ubuntu18安装mysql是不会出现设置 root 帐户密码的
命令:
sudo vim /etc/mysql/debian.cnf

mysql.png

在这个文件里面有着MySQL默认的用户名和用户密码,
最最重要的是:用户名默认的不是root,而是debian-sys-maint
mysql -u debian-sys-maint -p
提示输入密码,输入刚刚那个复杂的密码,进入mysql
版本是5.7,password字段已经被删除,取而代之的是authentication_string字段,我的是5.7,所以要更改密码:

use mysql;
update user set authentication_string=PASSWORD("You'r New Password") where User='root';
update user set plugin="mysql_native_password";
flush privileges;
exit;

重启:
service mysql restart
开启root用户远程登录:

sudo mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码';
flush privileges;   
select user,authentication_string,Host from user;  #查看root
  

用navicat验证远程登录与否

如果root远程登录不成功:

1. 查看 3306 端口是否正常
root@node1:~# netstat -an | grep 3306
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
注意:现在的 3306 端口绑定的 IP 地址是本地的 127.0.0.1
2. 修改 Mysql 配置文件(注意路径,跟之前网上的很多版本位置都不一样)
root@node1:~# vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到
bind-address            = 127.0.0.1
前面加 #注释掉
3. 重启 Mysql
service mysql restart
sudo mysql -u root -p               #进入mysql
create database hive;              #好像不需要创建这个hive数据库

4.1、 配置hive-site.xml

<name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://172.16.0.30:3306/hive?createDatabaseIfNotExist=true</value>

<name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>

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

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

<name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>

<name>datanucleus.schema.autoCreateAll</name>
   <value>false</value>

4.2、元数据存储初始化

cd /usr/local/hive/bin    
schematool -initSchema -dbType mysql

4.3、允许hive连接mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'mima' WITH GRANT OPTION; 后面的mima是配置hive-site.xml中配置的连接密码
flush privileges 刷新mysql系统权限关系表
4.4、启动验证hive
hive

hive.jpg

如果发生slf4j jar包冲突报错,是因为Hadoop的slf4j 与hive的slf4j jar包绑定冲突,移除其中一个即可。

 rm -rf  /usr/local/hive/lib/log4j-slf4j-impl-2.4.1.jar

三、Zookeeper的环境配置
1、下载zookeeper包后,解压:

tar  -xvf   zookeeper-3.4.10.tar.gz        #解压  
mv  zookeeper-3.4.10  zookeeper       #重命名文件名
mv  zookeeper   /usr/local                    #移动

2、修改配置文件
在集群的每台机器上都创建这些目录

mkdir   /usr/local/zookeeper/data  
mkdir   /usr/local/zookeeper/dataLog

在/usr/local/zookeeper/data里创建myid文件

touch  myid

修改master的myid文件为1,slave1为2,slave2为3


myid.png

3、新建zoo.cfg文件
切换到/usr/local/zookeeper/conf 目录下 ,没有zoo.cfg文件就新建一个,并加入以下内容

dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/dataLog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

4、将zookeeper文件夹传送到其他机器

scp -r /usr/local/zookeeper hadoop@slave1:~/
scp -r /usr/local/zookeeper hadoop@slave2:~

再在每个机器将zookeeper文件夹移动到/usr/local/ 目录下
5、启动zookeeper
切换到/usr/local/zookeeper/bin
zkServer.sh start 需要在每台机器都逐一启动

常用命令
启动
zkServer.sh start
查看状态
zkServer.sh status
重启
zkServer.sh restart
关闭
zkServer.sh stop
四、HBase的环境配置
1、解压文件包

tar  -xvf   hbase-1.2.7-bin.tar.gz       #解压
mv  hbase-1.2.7  hbase                   #重命名
mv  hbase  /usr/local/                      #移动

2、查看版本

start-hbase.sh
stop-hbase.sh

hbase version 

3、修改hbase-env.sh
切换到 /usr/local/hbase/conf 下,

export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop
export HBASE_HOME=/usr/local/hbase
export HBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop
export HBASE_PID_DIR=/usr/local/hbase/pids
export HBASE_MANAGES_ZK=false

4、修改 hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:8020/hbase</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>master</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
    </property>
    <property>
        <name>zookeeper.session.timeout</name>
        <value>60000000</value>
    </property>
    <property>
        <name>dfs.support.append</name>
        <value>true</value>
    </property>
</configuration>

注意:这个8020端口与 core-site.xml里的<name>fs.defaultFS</name>是一样的。
说明:hbase.rootdir:这个目录是region server的共享目录,用来持久化Hbase 。hbase.cluster.distributed :Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。
5、修改regionservers
指定hbase的主从,和hadoop的slaves文件配置一样
将文件修改为

slave1 
slave2

在一台机器上(最好是master)做完这些配置之后,我们使用scp命令将这些配置传输到其他机器上。
命令:

scp -r /usr/local/hbase hadoop@slave1:~/
scp -r /usr/local/hbase hadoop@slave2:~/

在每台机器移动hbase文件夹到 /usr/local/ 目录下

sudo mv hbase /usr/local

启动和停止

start-hbase.sh

stop-hbase.sh

打开网址 http://172.16.0.30:16010


hbase.png

五、Spark的环境配置
1、配置Scala

tar -xvf scala-2.12.2.tgz         
mv  scala-2.12.2  scala
sudo mv scala /usr/local/

2,配置Spark

tar -xvf spark-1.6.3-bin-hadoop2.4-without-hive.tgz
mv  spark-1.6.3-bin-hadoop2.4-without-hive  spark
sudo mv  spark /usr/local/

3、修改配置文件
切换到conf目录

cd /usr/local/spark/conf

修改 spark-env.sh
在conf目录下,修改spark-env.sh文件,如果没有 spark-env.sh 该文件,就复制spark-env.sh.template文件并重命名为spark-env.sh。
修改这个新建的spark-env.sh文件,加入配置:

export SCALA_HOME=/usr/local/scala
export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_HOME=/usr/local/spark
export SPARK_MASTER_HOST=172.16.0.30
export SPARK_MASTER_IP=172.16.0.30
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export SPARK_EXECUTOR_MEMORY=2G
export SPARK_LOCAL_IP=master
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native

4、修改slaves
slaves 分布式文件
在conf目录下,修改slaves文件,如果没有 slaves 该文件,就复制slaves .template文件并重命名为slaves 。
修改这个新建的slaves 文件,加入配置:

slave1
slave2

5、传输Scala以及spark到其他机器

scp -r /usr/local/scala hadoop@slave1:~/
scp -r /usr/local/scala hadoop@slave2:~/
scp -r /usr/local/spark hadoop@slave1:~/
scp -r /usr/local/spark hadoop@slave2:~/

然后在各自的机器将其移动到 /usr/local/ 目录下

sudo mv scala /usr/local/

6、spark启动
说明:要先启动Hadoop
切换到Spark目录下,启动spark

cd /usr/local/spark/sbin
start-all.sh                 

启动成功之后,可以使用jps命令在各个机器上查看是否成功。
可以在浏览器输入: ip+8080 端口查看


spark.png

六、配置kylin
1、安装

tar -zxvf apache-kylin-2.5.0-bin-hbase1x.tar.gz             #解压
mv apache-kylin-2.5.0-bin-hbase1x  kylin                      #重命名
sudo kylin  /usr/local/                                      #移动

2、配置kylin.sh
切换到kylin/bin 目录下

export KYLIN_HOME=/usr/local/kylin
export HBASE_CLASSPATH_PREFIX=${tomcat_root}/bin/bootstrap.jar:${tomcat_root}/bin/tomcat-juli.jar:${tomcat_root}/lib/*:$hive_dependency:$HBASE_CLASSPATH_PREFIX

3、配置kylin.properties
进入conf文件夹,修改kylin各配置文件kylin.properties如下:

kylin.rest.servers=master:7070
kylin.rest.timezone=GMT+8
kylin.job.jar=/usr/local/kylin/lib/kylin-job-2.5.0.jar
kylin.coprocessor.local.jar=/usr/local/kylin/lib/kylin-coprocessor-2.5.0.jar

4、配置kylin_hive_conf.xml和kylin_job_conf.xml
将kylin_hive_conf.xml和kylin_job_conf.xml的副本数设置为2

<property>
  <name>dfs.replication</name>
  <value>2</value>
  <description>Block replication</description>
</property>

5、启动服务
注意:在启动Kylin之前,先确认以下服务已经启动
启动zookeeper、hadoop、hbase

zkServer.sh start
start-all.sh
start-hbase.sh

启动 hivemetastore 服务

$HIVE_HOME/bin/hive --service metastore

还要启动hadoop的hdfs/yarn/jobhistory服务

mr-jobhistory-daemon.sh start historyserver

最后启动kylin

kylin.sh start

Web访问地址: http://172.16.0.30:7070/kylin/

kylin.png

ADMIN/KYLIN 账户密码登录
七、配置mahout

tar -zxvf apache-mahout-distribution-0.13.0.tar.gz       #解压
mv apache-mahout-distribution-0.13.0 mahout            #重命名
sudo mahout /usr/local/                                 #移动

注意:全部的环境变量在前面编辑profile文件已经配置好了
注意:全部的环境变量在前面编辑profile文件已经配置好了
注意:全部的环境变量在前面编辑profile文件已经配置好了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容