【大数据】Hadoop集群环境搭建

一、环境说明:

组件 版本
Java Oracle-JDK 1.8
Hadoop 2.10.0
Zookeeper 3.5.7
Spark spark-2.4.4-bin-hadoop2.7
HBase 2.2.3
Hive 3.1.2

三台centos7服务器,配置如下

服务器 配置 IP
Master 4核CPU、3G内存 192.168.254.137
Slave1 4核CPU、3G内存 192.168.254.140
Slave2 4核CPU、3G内存 192.168.254.139

配置文件及安装包下载地址:https://pan.baidu.com/s/1A5d7kJ60btSOX95H2Ll5sg
提取码:7rlk

二、安装JDK

1.解压jdk1.8.0_131.tar.gz至/data/ent/java
2.配置环境变量(vim /etc/profile)添加以下信息:

export JAVA_HOME=/data/ent/java/jdk1.8.0_131
export JRE_HOME=/data/ent/java/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

3.验证是否安装成功
. /etc/profile ; java -version

三、 安装hadoop

1. 解压hadoop-2.10.0.tar.gz至/data/ent/hadoop

2. 配置环境变量(vim /etc/profile)添加以下信息:

export HADOOP_HOME=/data/ent/hadoop/hadoop-2.10.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3. 验证是否安装成功

. /etc/profile ; hadoop version

4. Hadoop集群搭建

4.1每个节点均配置如下机器名

每台机器关闭防火墙

systemctl disable firewalld.service ; systemctl stop firewalld.service

分别设置主机名:

hostnamectl --static set-hostname master
hostnamectl --static set-hostname slave1
hostnamectl --static set-hostname slave2

vim /etc/hosts追加以下配置

192.168.254.137 master
192.168.254.140 slave1
192.168.254.139 slave2

4.2 对master配置节点ssh免密登录

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

4.3 配置文件设置
每台机器,${HADOOP_HOME}/etc/hadoop/hadoop-env.sh文件最后添加

export JAVA_HOME=/data/ent/java/jdk1.8.0_131 #java路径一定要配,hadoop不会去读/etc/profile里面的java配置
export HDFS_NAMENODE_USER=root #以哪个用户启动HDFS NAMENODE 
export HDFS_DATANODE_USER=root  #以哪个用户启动HDFS DATANODE 
export HDFS_SECONDARYNAMENODE_USER=root #以哪个用户启动HDFS SECONDARYNAMENODE

每台机器, ${HADOOP_HOME}/etc/hadoop/core-site.xml编辑为如下信息:

<configuration>
	<!-- 默认情况下是在tmp目录,重启数据就会丢失 --> 
	<property> 
		<name>hadoop.tmp.dir</name> 
		<value>/var/lib/hadoop</value> 
	</property> 
	<!-- 默认文件系统 --> 
	<property> 
		<name>fs.defaultFS</name> 
		<value>hdfs://master:9000</value> 
	</property> 
</configuration>

每台机器,${HADOOP_HOME}/etc/hadoop/hdfs-site.xml编辑为如下信息

<configuration>
    <!--hdfs副本数-->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

每台机器,${HADOOP_HOME}/etc/hadoop/yarn-site.xml编辑为如下信息

<configuration>
	  <!-- Site specific YARN configuration properties -->
    <!-- 配置运行资源管理器的主机名 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <!-- 配置运行资源管理器的RPC服务器的主机名和端口 -->
    <!-- 
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
     -->
    <!-- 节点管理器运行的附加服务列表 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 配置节点管理器分配给容器的物理内存容量 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>2048</value>
    </property>
    <!-- 配置节点管理器分配给容器的核数量 -->
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>4</value>
    </property>
</configuration>

每台机器,${HADOOP_HOME}/etc/hadoop/mapred-site.xml编辑为如下信息

cp ${HADOOP_HOME}/etc/hadoop/mapred-site.xml.template ${HADOOP_HOME}/etc/hadoop/mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

每台机器,${HADOOP_HOME}/etc/hadoop/slaves编辑为如下信息

slave1
slave2

4.4 master启动HDFS和YARN

cd ${HADOOP_HOME}/sbin
hdfs namenode -format #初始化hdfs,如果重启集群以前数据还在,就不用再初始化,直接运行下一条命令
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

4.5 检查是否安装成功(每台机器运行jps,正常显示如下)
mster: NameNode,Secondary NameNode,ResourceManager, JobHistoryServer
slave1: DataNode,NodeManager
slave2: DataNode,NodeManager
4.6 WEB端管理后台
Hadoop2.x的namenode界面访问端口默认是:50070
Hadoop3.x的namenode界面访问端口默认是:9870

Namenode管理地址:http://192.168.254.137:50070
ResourceManager管理地址:http://192.168.254.137:8088
4.7 样例运行

cd ${HADOOP_HOME}
bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/root
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar grep input output 'dfs[a-z.]+'
bin/hdfs dfs -get output output
cat output/*

四、 安装Zookeeper

1.解压apache-zookeeper-3.5.7-bin.tar.gz至/data/ent/zookeeper

2.配置环境变量(vim /etc/profile)添加以下信息:

export ZK_HOME=/data/ent/zookeeper/apache-zookeeper-3.5.7-bin
export PATH=$PATH:$ZK_HOME/bin

3.添加配置文件

3.1 在$ZK_HOME /conf添加zoo.cfg文件

cp zoo_sample.cfg zoo.cfg

3.2修改以下信息:

dataDir=/data/ent/zookeeper/ apache-zookeeper-3.5.7-bin/data
dataLogDir=/data/ent/zookeeper/apache-zookeeper-3.5.7-bin/logs
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888

3.3创建data和logs目录

mkdir -p /data/ent/zookeeper/apache-zookeeper-3.5.7-bin/data
mkdir -p /data/ent/zookeeper/apache-zookeeper-3.5.7-bin/logs

3.4 data目录下新建myid文件

echo 0 > $ZK_HOME/data/myid			#master机器执行
echo 1 > $ZK_HOME/data/myid			#slave1机器执行
echo 2 > $ZK_HOME/data/myid			#slave2机器执行

4.启动

. /etc/profile ; /data/ent/zookeeper/apache-zookeeper-3.5.7-bin/bin/zkServer.sh start

5.验证是否安装成功

/data/ent/zookeeper/apache-zookeeper-3.5.7-bin/bin/zkServer.sh status

6.安装zkui
将zkui文件夹复制至master的/data/ent/zookeeper/zkui
运行start.sh启动zkui

(配置appconfig
cd /data/ent/zookeeper/apache-zookeeper-3.5.7-bin/bin
zkCli.sh -server master:2181,slave1:2181,slave2:2181
create /appconfig "my appconfig"
create /appconfig/hosts 192.168.254.137)

五、安装Spark

1.解压spark-2.4.4-bin-hadoop2.7.tgz至/data/ent/spark

2.配置环境变量(vim /etc/profile)添加以下信息:

export SPARK_HOME=/data/ent/spark/spark-2.4.4-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native

3. 各节点配置文件保存至$SPARK_HOME/conf

4.验证是否安装成功

【两个master(master和slave1),两个workder(slave1,slave2)】
master节点运行:

. /etc/profile ; /data/ent/spark/spark-2.4.4-bin-hadoop2.7/sbin/start-all.sh

slave1节点运行:

. /etc/profile ; /data/ent/spark/spark-2.4.4-bin-hadoop2.7/sbin/start-master.sh

【备注】
1.当要是用yarn资源管理器时,不需要启动${SPARK_HOME}/sbin/start-all.sh,只需要启动${HADOOP_HOME}/sbin/start-yarn.sh即可,运行spark任务是用: spark-shell/spark-submit --master yarn --deploy-mode client/cluster即可
2.当要使用spark自带的standlone或者local模式运行,则需要启动${SPARK_HOME} /sbin/start-all.sh

当${SPARK_HOME}/sbin/start-all.sh和${HADOOP_HOME}/sbin/start-yarn.sh都启动时,任务到底在通过哪个资源管理器进行管理运行,则要看提交任务的方式,如:
1>spark-shell/spark-submit --master yarn --deploy-mode client/cluster //spark on yarn
2>spark-shell/spark-submit --master spark://master:7077 //standlone
3>spark-shell/spark-submit --master local[*] //本地模式

5.spark web ui

http://master:8080/
http://slave1:8080/

6.运行命令

// yarn集群模式
spark-shell/spark-submit --master yarn --deploy-mode client/cluster
//standlone集群模式
spark-shell/spark-submit  --master spark://master:7077
//本地模式(用于测试)
spark-shell/spark-submit  --master local[*]

【备注】spark-shell/spark-submit二选一,client/cluster二选一,例子:

root@hdp1 /mnt]#spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 2g --executor-memory 1g --executor-cores 1 --queue thequeue /mnt/software/spark-2.2.0-bin-hadoop2.6/examples/jars/spark-examples*.jar 10

六、安装HBase

1.解压hbase-2.2.3-bin.tar.gz至/data/ent/hbase

2.配置环境变量(vim /etc/profile)添加以下信息:

export HBASE_HOME=/data/ent/hbase/hbase-2.2.3
export PATH=$PATH:$HBASE_HOME/bin

3.验证是否安装成功

. /etc/profile ; hbase shell

4.HBase集群搭建

4.1配置文件保存至各个节点$HBASE_HOME/conf
4.2 运行

cd $HBASE_HOME/bin
./start-hbase.sh

4.3 Master Web UI

http://master:16010/master-status

4.4 运行hbase shell命令行操作hbase

七、安装Hive

1.解压apache-hive-3.1.2-bin.tar.gz至/data/ent/hive

2.配置环境变量(vim /etc/profile)添加以下信息:

export HIVE_HOME=/data/ent/hive/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:$HIVE_HOME/bin

3.验证是否安装成功

. /etc/profile ; hive --version

4.Hive集群搭建

4.1 mysql创建hive数据库和hive用户,例如:

create database hive default charset utf8 collate utf8_general_ci;
create user 'hive'@'%' identified by '123456';
grant all privileges on hive.* to 'hive'@'%' identified by '123456';
flush privileges;

4.2将配置文件传至$HIVE_HOME/conf
4.3初始化hive

cd /data/ent/hive/apache-hive-3.1.2-bin/bin
schematool -dbType mysql -initSchema

4.4 启动hive

hive