CentOS 6.5下大数据组件安装部署

前言

本文演示环境在 CentOS 6.5 下,具体大数据组件的版本在下面会具体标注。

Hadoop 伪分布式环境搭建

  • 安装 Hadoop 前需要提前安装好 JDK,JDK 的安装可见 CentOS 6.5常用软件安装 中的 JDK 安装步骤
  • Hadoop 版本 hadoop-2.6.0-cdh5.7.0,点我下载
  • 创建 hadoop 用户,在 hadoop 用户的家目录下分别创建
    • app(存放解压后的文件夹)
    • software(存放软件压缩包)
    • data(存放数据文件)
    • log(存放日志文件)
  • 将下载好的 tar 包上传到 software 目录下,解压到当前目录,创建一个到 app 目录的软连接
# 新建 hadoop 用户,切换到 hadoop 的家目录
useradd hadoop
su - hadoop

# 创建存放不同文件的目录
mkdir app software data log

# 将文件通过 rz 命令或者图形化 SFTP 客户端上传到 software 文件夹下并解压
tar -xzvf hadoop-2.6.0-cdh5.7.0.tar.gz



# 做一个软连接到 app 文件夹,注意不在同级目录下做软连接使用全路径
ln -s /home/hadoop/software/hadoop-2.6.0-cdh5.7.0 /home/hadoop/app/hadoop

# 配置 Hadoop 环境变量
vi ~/.bash_profile

HADOOP_HOME=~/app/hadoop
PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
  • 配置 hadoop-env
# 在 app 目录下,进入 hadoop 的配置文件保存路径
cd hadoop/etc/hadoop/

# 由于在 linux 环境下,删除所有 .cmd 的文件
rm -rf *.cmd

# 编辑 hadoop-env.sh
vi hadoop-env.sh

# 修改其中的JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_45

# dn, nn, snn 的pid文件默认保存在/tmp目录下,里面保存了pid,启动时需要读取该pid
[root@hadoop001 tmp]# ll
total 12
-rw-rw-r--. 1 hadoop hadoop 5 Jul  6 17:47 hadoop-hadoop-datanode.pid
-rw-rw-r--. 1 hadoop hadoop 5 Jul  6 17:47 hadoop-hadoop-namenode.pid
-rw-rw-r--. 1 hadoop hadoop 5 Jul  6 17:47 hadoop-hadoop-secondarynamenode.pid


# 由于 Linux 环境下的 /tmp 目录 30 天清空一次,所以要重新指定一个 pid 文件存储位置
# 注释掉原来的 HADOOP_PID_DIR,指定为一个新的路径
export HADOOP_PID_DIR=/data/tmp

  • 配置 core-site.xml
# 在 /etc/hadoop 目录下,修改 core-site.xml
vi core-site.xml

# 在 Configuration 节点下,添加一个 property,保存退出
# 注意使用 hostname,不要使用 ip
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop001:9000</value>
</property>
  • 修改slaves
# 在 /etc/hadoop 目录下,修改 slaves
vi slaves

# 将 localhost 更改为 hostname
hadoop001
  • 配置 hdfs-site.xml
# 在 /etc/hadoop 目录下,修改 hdfs-site.xml
vi hdfs-site.xml

# 备份数
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

# 指定 snn 的地址为 hostname:port
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop001:50090</value>
</property>

<property>
        <name>dfs.namenode.secondary.https-address</name>
        <value>hadoop001:50091</value>
</property>

  • 配置 mapred-site.xml
# 复制一份示例文件
cp mapred-site.xml.template mapred-site.xml

# 修改文件
vi mapred-site.xml

# 添加配置
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>
  • 配置 yarn-site.xml
# 编辑yarn-site.xml
vi yarn-site.xml

# 添加配置
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
  • 配置无密码认证
# 测试 ssh localhost,发现需要登录认证且需要输入密码
ssh localhost

# 示例
# The authenticity of host 'localhost (::1)' can't be established.
# RSA key fingerprint is af:5f:7d:c7:e0:f0:d1:dd:b3:fd:06:f2:30:57:80:80.
# Are you sure you want to continue connecting (yes/no)? 
# 输入 no 退出

# 执行 ssh-keygen,三次回车
ssh-keygen

# 进入 .ssh 目录中,追加生成新文件,将新文件的权限改为600
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys

# 执行ssh测试,第一次执行需要输入 yes,发现不需要输入密码也可以登录
# 如果地址前面没有指定用户,默认使用当前用户登录远程机器 ssh id@ip
# ssh localhost         登录 localhost
# ssh localhost date    登录 localhost,执行 date 命令,然后返回结果,不会切换到 ssh 的机器
ssh localhost date
  • 格式化HDFS文件系统
# 在 app/hadoop 目录下
bin/hdfs namenode -format

# 启动服务,使用 jps 可以查看启动了三个进程
sbin/start-dfs.sh

# 示例
# [hadoop@hadoop001 hadoop]$ jps
# 13297 Jps
# 13010 DataNode
# 12919 NameNode
# 13194 SecondaryNameNode

# 在浏览器访问 Hadoop 的Web界面,默认端口为50070
IP:50070

# 在上方 Navbar 的 Utilities 中选择Browse the file system 可以查看 hdfs 上的文件
  • 测试 hdfs 是否能正常使用
# 在 hdfs 级联创建一个目录
bin/hdfs dfs -mkdir -p /user/hadoop

# 将 etc/hadoop 下的文件都上传到 /user/hadoop 的 input 目录下
# 如果给定 hdfs 上的路径是一个相对路径,那么会上传到 /user/<username> 下
bin/hdfs dfs -put etc/hadoop input

# 执行一个 MapReduce 作业
# 将 input 目录中的内容作为输入,筛选出以 dfs 开头的字符串,然后输出到 output 目录中
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'

# 查看执行结果
bin/hdfs dfs -cat output/*

# 停止服务
sbin/stop-dfs.sh
  • 启动 yarn 服务
# 启动 yarn
sbin/start-yarn.sh

# 查看进程
# 8069 NodeManager
# 7977 ResourceManager

# 在浏览器可以打开yarn的web界面查看
# http://hadoop001:8088/cluster

Hive部署

  • 由于 Hive 是构建在 Hadoop 之上的数据仓库,所以需要先安装好 Hadoop 并启动,Hadoop 的安装过程见上面的 Hadoop 部分;同时 Hive 的元数据存储在 MySQL 中,所以还需要安装好 MySQL
  • Hive 版本 hive-1.1.0-cdh5.15.1.tar.gz, 点我下载
  • 使用Hadoop用户,将下载好的 tar 包上传到 software 目录下,解压到当前目录,创建一个到 app 目录的软连接,配置环境变量
# 切换到 Hadoop 用户
su - hadoop

# 将压缩包上传到 software 目录,解压到当前目录
tar -xzvf hive-1.1.0-cdh5.15.1.tar.gz

# 切换到 app 目录,创建一个软连接
ln -s /home/hadoop/software/hive-1.1.0-cdh5.15.1 hive

# 配置 HIVE_HOME
vi ~/.bash_profile

HIVE_HOME=~/app/hive
PATH=${HIVE_HOME}/bin:$PATH
  • 将 MySQL 的 JDBC 驱动(点我下载)放到 HIVE_HOME 的 lib 目录下
  • 配置 hive-env.sh 文件,如果已经在环境变量中配置了 HADOOP_HOME,则可以不用配置该文件;如果没有,则需要把 conf 目录下该文件的 template 文件拷贝一份,重命名为 hive-env.sh,修改其中的 HADOOP_HOME 即可
  • 新建 hive-site.xml 文件,按照MySQL的配置修改
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>

	<!-- JDBC URL -->
	<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/zhihandata?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</value>
    </property>

	<!-- JDBC DRIVER -->
	<property>
      	<name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
   	</property>

	<!-- JDBC USERNAME -->
	<property>
  		<name>javax.jdo.option.ConnectionUserName</name>
      	<value>root</value>
    </property>

	<!-- JDBC PASSWORD -->
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>123456</value>
	</property>

	<!-- Hive命令行显示当前数据库名 -->
	<property>
	    <name>hive.cli.print.current.db</name>
	    <value>true</value>
	</property>

	<!-- Hive命令行显示列名 -->
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
    </property>

</configuration>
  • 启动 hive
# 命令行输入 hive 即可启动,首先保证 mysql 和 hadoop 服务都已经正常启动
hive

# 能顺利显示
# hive (default)> 
# 代表正常启动

sqoop 部署

  • sqoop 是一个用于 RDBMS 和 Hadoop 平台(HDFS / Hive / HBase)之间导入导出的一个工具,其中导入导出是以 Hadoop 平台为基点来说
  • sqoop版本分为1.x(1.4.x)和 2.x(1.99.x),2.x的版本基本不用,这里使用 1.4.6 版本的sqoop,点我下载
  • 使用Hadoop用户,将下载好的 tar 包上传到 software 目录下,解压到当前目录,创建一个到 app 目录的软连接,配置环境变量
# 切换到 Hadoop 用户
su - hadoop

# 将压缩包上传到 software 目录,解压到当前目录
tar -xzvf sqoop-1.4.6-cdh5.15.1.tar.gz

# 切换到 app 目录,创建一个软连接
ln -s /home/hadoop/software/sqoop-1.4.6-cdh5.15.1 sqoop

# 配置 SQOOP_HOME
vi ~/.bash_profile

SQOOP_HOME=~/app/sqoop
PATH=${SQOOP_HOME}/bin:$PATH

# 使新的环境变量生效
source ~/.bash_profile
  • 进入 SQOOP_HOME 的conf目录,配置 sqoop-env 文件
# 拷贝 conf 目录下的 env 示例文件
cp sqoop-env-template.sh sqoop-env.sh

# 指定 HADOOP_HOME 和 HIVE_HOME
export HADOOP_COMMON_HOME=/home/hadoop/app/hadoop
export HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop
export HIVE_HOME=/home/hadoop/app/hive
  • 将需要的几个jar包拷贝到sqoop的lib目录下

    • json包,点我下载
    • mysql jdbc驱动包,可以从Hive目录下的lib目录中直接复制过去,或者 点我下载
  • 运行sqoop help,查看是否能正常启动

# 成功安装
[hadoop@hadoop001 ~]$ sqoop help
Warning: /home/hadoop/software/sqoop-1.4.6-cdh5.15.1/bin/../../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /home/hadoop/software/sqoop-1.4.6-cdh5.15.1/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /home/hadoop/software/sqoop-1.4.6-cdh5.15.1/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /home/hadoop/software/sqoop-1.4.6-cdh5.15.1/bin/../../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
19/07/29 20:59:00 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.15.1
usage: sqoop COMMAND [ARGS]

Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  import-mainframe   Import datasets from a mainframe server to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

See 'sqoop help COMMAND' for information on a specific command.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值