公司准备使用Kylin进行数据分析,所以须要进行hadopp+Kylin服务器的搭建和使用。 本教程基于:html
讲解hadoop服务器的搭建流程java
//添加hadoop用户
sudo useradd -m hadoop -s /bin/bash
//设置用户密码
sudo passwd hadoop
//添加管理员权限
sudo adduser hadoop sudo
复制代码
切换至hadopp用户node
hadoop的搭建可参考hadoopmysql
更新apt源linux
sudo apt-get update
复制代码
安装SSH、配置SSH无密码登录git
//安装SSH service
sudo apt-get install openssh-server
//登录本机
ssh localhost
复制代码
此时会有以下提示(SSH首次登录提示),输入 yes 。而后按提示输入密码 hadoop,这样就登录到本机了。 !github
首先退出刚才的 ssh,就回到了咱们原先的终端窗口,而后利用 ssh-keygen 生成密钥,并将密钥加入到受权中:sql
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就能够
cat ./id_rsa.pub >> ./authorized_keys # 加入受权
复制代码
安装JAVA环境数据库
此处安装jdk的Java环境\apache
下载jdk压缩包
下载地址:JDK下载地址
解压压缩包并移动
sudo tar -zxf jdk-8u161-linux-x64.tar.gz #解压
sudo mv jdk1.8.0_161/ /usr/local/java #移动压缩包
复制代码
$sudo vim ~/.bashrc
//在.bashrc文件中添加环境变量
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
//刷新变量文件
source ~/.bashrc
echo $JAVA_HOME # 检验变量值
java -version
$JAVA_HOME/bin/java -version # 与直接执行 java -version 同样
复制代码
sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz #解压
sudo mv hadoop-2.9.0 /usr/local/hadoop # 将文件夹名改成hadoop
cd /usr/local/
sudo chown -R hadoop ./hadoop # 修改文件权限
# 添加环境变量
# set hadoop enviroment
export HADOOP_HOME=/usr/local/hadoop
export PATH=${HADOOP_HOME}/bin:$PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
复制代码
Hadoop 解压后便可使用。输入以下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
cd /usr/local/hadoop
./bin/hadoop version
复制代码
配置Hadoop伪分布模式
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式须要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每一个配置以声明 property 的 name 和 value 的方式来实现。修改配置文件 core-site.xml (经过 gedit 编辑会比较方便: gedit ./etc/hadoop/core-site.xml),将当中的 修改成下面配置:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://IP:9000</value>
</property>
</configuration>
复制代码
一样的,修改配置文件 hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
复制代码
配置完成后,执行 NameNode 的格式化:
./bin/hdfs namenode -format
复制代码
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。
接着开启 NameNode 和 DataNode 守护进程
./sbin/start-dfs.sh
复制代码
Hadoop安装完后,启动时报Error: JAVA_HOME is not set and could not be found. 解决办法:修改/etc/hadoop/hadoop-env.sh中设JAVA_HOME。应当使用绝对路径。
export JAVA_HOME=$JAVA_HOME //错误,不能这么改
export JAVA_HOME=/usr/java/jdk1.6.0_45 //正确,应该这么改
复制代码
启动完成后,能够经过命令 jps 来判断是否成功启动,若成功启动则会列出以下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(若是 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,而后再次尝试启动尝试)。若是没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查以前步骤,或经过查看启动日志排查缘由。
成功启动后,能够访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还能够在线查看 HDFS 中的文件。
YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,YARN 的更多介绍在此不展开,有兴趣的可查阅相关资料。
上述经过 ./sbin/start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce 环境,咱们能够启动 YARN ,让 YARN 来负责资源管理与任务调度。
首先修改配置文件 mapred-site.xml,这边须要先进行重命名:
mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
gedit ./etc/hadoop/mapred-site.xml
//添加配置信息
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
//接着修改配置文件 yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
复制代码
增长以上信息在 yarn-site.xml to enable log aggregation.
yarn是用管理job的调度,而后这个地方须要手动的去开启才能够看到。不然使用sqoop导入数据将会报错。
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
复制代码
而后就能够启动 YARN 了(须要先执行过 ./sbin/start-dfs.sh):
./sbin/start-yarn.sh # 启动YARN
./sbin/mr-jobhistory-daemon.sh start historyserver # 开启历史服务器,才能在Web中查看任务运行状况
http://localhost:8088/cluster
复制代码
开启后经过 jps 查看,能够看到多了 NodeManager 和 ResourceManager 两个后台进程,以下图所示。
安装mysql
1. sudo apt-get install mysql-server
2. sudo apt-get install mysql-client
3. sudo apt-get install libmysqlclient-dev
4.安装完成以后可使用以下命令来检查是否安装成功:
sudo netstat -tap | grep mysql
5.登录mysql数据库能够经过以下命令:
mysql -u root -p
复制代码
下载Hive
wget http://mirror.bit.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz
tar -zxvf apache-hive-2.1.1-bin.tar.gz
sudo mv apache-hive-2.1.1-bin /usr/local/hive
复制代码
配置环境变量(同上)
export HIVE_HOME=/usr/local/hive
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HCAT_HOME=$HIVE_HOME/hcatalog
export HIVE_CONF=$HIVE_HOME/conf
export PATH=${HIVE_HOME}/bin:$PATH
复制代码
在hive的目录下,新建warehouse、tmp、log文件夹。 修改配置文件hive/conf
cp hive-env.sh.template hive-env.sh
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-default.xml.template hive-site.xml
复制代码
修改hive-env.sh,查找一下字段并去掉前面的注释#,加上相应的路径
export HADOOP_HEAPSIZE=1024
HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
复制代码
这儿采用mysql做为hive的元数据库 在本身的mysql中为hive新建一个用户 mysql数据库建立Hive用户
mysql>CREATE USER 'hive' IDENTIFIED BY 'hive';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
mysql>flush privileges;
复制代码
修改hive-site.xml文件,添加相应的路径和mysql数据库,用户名,密码
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/local/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive/log</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive/tmp</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</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>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
复制代码
下载mysql-connector-java\
地址:dev.mysql.com/downloads/c…
解压获得mysql-connector-java-5.1.40.jar,拷贝到hive的lib目录下。
登录MySQL建立hive数据库
mysql> create database hive;
mysql> show databases
复制代码
若是此时出现这个错误Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
解决方案以下:
在hive 配置文件hive-site.xml 中找到${system:java.io.tmpdir},并把此都替换成具体目录,如/usr/local/hive/iotmp
Kylin用 HCatalog 读取Hive表的,而HCatalog用 property hive.metastore.uris 建立HiveMetaStoreClient 获得元信息。所以,咱们还需修改hive-site.xml:
<property>
<name>hive.metastore.uris</name>
<value>thrift://localhost:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
复制代码
开启metastore 服务:
nohup hive --service metastore -p 9083 &
复制代码
tar -zxvf hbase-1.2.6-bin.tar.gz
sudo mv hbase-1.2.6 /usr/local/hbase
sudo vim ~/.bashrc
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HIVE_HOME/bin:$HBASE_HOME/bin
复制代码
伪分布模式须要用到hadoop文件系统 ,因此配置会比单机模式麻烦不少 而且须要版本匹配;
# 添加java环境变量和hbase_classpath(指向hadoop的配置文件目录)
export JAVA_HOME=/usr/local/java
#经过hadoop的配置文件找到hadoop集群
export HBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop
#使用HBASE自带的zookeeper管理集群
export HBASE_MANAGES_ZK=true
复制代码
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoopIp:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hbase/zookeeper</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoopIp</value>
</property>
</configuration>
复制代码
进入bin目录以root权限开启HBase服务:
# 注意在开启hbase服务以前,必定要运行一下sudo chown -R hadoop ./hbase
./start-hbase.sh
#访问http://172.60.20.12:16010/master-status 地址便可查看Hbase的配置信息
复制代码
配置~/.bashrc文件,添加以下环境变量,并生效。
export KYLIN_HOME=/usr/local/kylin
export hive_dependency=$HIVE_HOME/conf:$HIVE_HOME/lib/*:$HCAT_HOME/share/hcatalog/hive-hcatalog-core-1.2.2.jar
PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
PATH=$PATH:$HBASE_HOME/bin:$FLUME_HOME/bin:$HIVE_HOME/bin:$HCAT_HOME/bin
PATH=$PATH:$CATALINA_HOME/bin:$KYLIN_HOME/bin
export PATH
复制代码
修改kylin.properties配置文件
#修改
kylin.server.cluster-servers=192.168.1.201:7070
#添加配置
kylin.job.jar=/usr/local/apps/kylin/lib/kylin-job-2.1.0.jar
kylin.coprocessor.local.jar=/usr/local/apps/kylin/lib/kylin-coprocessor-2.1.0.jar
kylin.job.yarn.app.rest.check.status.url=http://192.168.1.202:8088/ws/v1/cluster/apps/${job_id}?anonymous=true
复制代码
注意:kylin 自己有bug,安装成功以后会关联不到hive/lib 须要修改kylin.sh 文件。 查找HBASE_CLASSPATH_PREFIX行,并修改成
export HBASE_CLASSPATH_PREFIX=${KYLIN_HOME}/conf:${KYLIN_HOME}/lib/*:${KYLIN_HOME}/ext/*:${hive_dependency}:${HBASE_CLASSPATH_PREFIX}
复制代码
设置完毕以后便可经过kylin.sh start命令启动项目,访问http://XXX.XX.XX.XX:7070/kylin 进入Web管理界面。
文章参考: Apache Kylin 部署之不彻底指南
Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
我的博客地址:aikiller.github.io/