搭建hadoop集群
在上一篇文章(在centos07 VM 下的单机hadoop搭建)中,我们已经搭建好了单机的hadoop,接下来我们搭建hadoop集群。
一、复制虚拟机
关闭搭建好的虚拟机,右键点击管理,如图所示
接下来,修改每台机器的ip地址,主机名,主机列表
复制的两台机器:
修改IP地址:vi etc/syscondig/network-scripts/ifcfg-ens33 修改成自己的主机地址
主机名:vi etc/hostname 修改成自己的主机名
记得:hostnamectl set-hostname hadoop02 (及时生效修改的主机名)
三台机器:
修改主机列表:vi /etc/hosts
必须地址与主机名对应
如:192.168.255.115 hadoop01
192.168.255.116 hadoop02
192.168.255.117 hadoop03
以上均修改完成后:记得重新启动网络(三台)
输入:systemctl restart network接下来创建ssh连接。如下所示,
创建完ssh,并连接上后,我们要配置三台机器上的无密访问:
在hadoop01上,操作如下:
(1)创建密钥
ssh-keygen -t rsa -P ""
(2)复制公钥到自己的机器上
cat .ssh/id_rsa.pub > .ssh/authorized_keys
(3)传递自己的密钥给其他机器,建立通讯
ssh-copy-id -i .ssh/is_rsa.pub -p22 root@hadoop02
ssh-copy-id -i .ssh/is_rsa.pub -p22 root@hadoop03
在hadoop02、hadoop03上,都重复以上步骤。 完成后使用:ssh root@hadoop02 进行各个机器之间的通信测试,测试成功即可。 下面配置hadoop: 可以下hadoop01上配置,然后copy到其他机器上。 到此目录下:cd /opt/insatll/hadoop260/etc/hadoop(作者自己安装的hadoop目录) 修改以下几个配置文件:一般是hdfs-site.xml 和slaves即可 hdfs-site.xml修改内容如下:
<configuration>
<property>
<name>dfs.replication</name>
<!-- 把1修改成3 -->
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<!-- hadoop111改为hadoop112 -->
<value>hadoop112:50090</value>
</property>
</configuration>
修改slaves(添加集群的主机列表),内容如下: hadoop01 hadoop02 hadoop03 修改完成后,把修改的文件传给其他两台主机。
scp /opt/install/hadoop260/etc/hadoop/hdfs-site.xml root@hadoop02:/opt/install/hadoop260/etc/hadoop/hdfs-site.xml
scp /opt/install/hadoop260/etc/hadoop/slaves root@hadoop02:/opt/install/hadoop260/etc/hadoop/slaves
注意:两台机器都要传送 完成之后,hadoop的集群配置完成。 接下来重新格式化, 格式化之前先删除 /opt/install/hadoop260/下的tmp文件夹,因为他是存储hadoop运行后的数据的,之前在单机版行,我们已经运行过了,里面有内容,如果不删除,此次格式化生成的id可能会于之前存储的冲突,这样就会启动失败,或者丢失节点,故需要删除(首次启动不需要) 删除tmp:rm -rf (每个主机都需要))/opt/install/hadoop260/tmp 接下来格式化:hadoop namenode -format 然后启动hadoop:start-all.sh 会出现以下节点:
接下安装zookeepr集群
zookeeper是用来管理整个hadoop集群的,包括两部分:文件系统和通知机制 作用:存储和管理大家都关心的数据。如配置文件,当文件发生改变,随机把修改的文件发到其他群众。 前提:准备好安装包 并解压安装完成 进入到安装目录下:
cd /etc/install/zookpr/conf
接下来修改配置文件名:
mv zoo_sample.cfg zoo.cfg
创建一个文件夹:
mkdir /opt/install/hadoop260/zkdata
进入配置文件:vi zoo.cfg 配置内容:
dataDir=/opt/install/hadoop260/zkdata
添加:
server.1=hadoop111:2888:3888
server.2=hadoop112:2888:3888
server.3=hadoop113:2888:3888
保存退出 进入到新创建的文件夹下:
cd /opt/install/hadoop260/zkdata
配置以下文件:
vi myid
输入server对应的编号1 接下来,把配置好的zookpr传给另两台机器: 先进入到:cd /opt/install/zookpr/ 把整个conf目录传给其他两台机器:
scp -r conf root@hadoop112:$PWD
scp -r conf root@hadoop113:$PWD
然后再到其他两台机器上,创建zkdata文件,修改myid中的值 修改完后才能后,启动三台的zookpr 输入:zkServer.sh start 如下所示:说明启动日志成功
安装好了hadoop集群和zookpr集群 接下来安装hbase
habse是hadoop的数据库 一样解压安装好hbase 同样的目录即可 进入到:cd /opt/install/hbase/conf 输入:vi hbase-env.sh 在末尾输入以下内容:
export JAVA_HOME=/opt/install/jdk8
export HBASE_MANAGES_ZK=false
输入:vi hbase-site.xml 在输入以下内容:
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.241.131:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/install/hbase120/data</value>
</property>
输入:vi /etc/profile 在末尾输入以下内容:
export HBASE_HOME=/opt/install/hbase120
export PATH=….:$HBASE_HOME/bin
输入:source /etc/profile 开启hbase:start-hbase.sh 进入hbase:hbase shell
安装mysql(hive的基础)
安装hive之前,先安装mysql,因为需要mysql存储其元数据信息 安装mysql: 首先先检查系统是否装有mysql,因为linux下默认的是Mariadb ,故先查看是否有这个进程: 输入:rpm -qa | grep mariadb 如果存在 杀掉这个进程:kill 进程号 如果不存在: 更新mariadb数据库:
yum install mysql
下载wget依赖:
yum -y install wget
下载mysql的repo源:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
安装mysql:(root用户除外的其他用户,需要在最前面加上sudo)
rpm -ivh mysql-community-release-el7-5.noarch.rpm
输入:cd /etc/yum.repos.d/ 输入:ll 查看是否具有两个mysql的repo源
存在,接着安装mysql:
输入:yum install mysql-server
完成后再次查看mysql
rpm -qa | grep mysql
出现mysql的各个安装包,则完成。
接下来登录:mysql -u root 可能会报错
输入:chown -R root:root /var/lib/mysql
修改mysql访问的权限,把mysql的拥有者改为当前用户
接下来重启服务:
service mysqld restart
接下来登录,重置密码
mysql
进入mysql 输入:use mysql; 修改密码:update user set password=password('ok') where user='root'; 退出:exit 重启:service mysqld restart 接着为此mysql添加远程连接的能力 再次登录:mysql -uroot -p 进入mysql 输入:GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "ok"; 接下来查看编码:
show variables like "%char%",
确保是utf-8模式,否则会出现中文乱码的问题。 退出 进入配置文件 vi /etc/my.cnf 在[mysqld]上下添加以下内容:
[client]
default-character-set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
保存退出,至此完成mysql的安装
安装hive
一样倒包解压到相应的目录 配置文件: 输入:cp hive-env.sh.template hive-env.sh复制一个hive-env.sh 输入:vi hive-env.sh,配置如下:
export HADOOP_HOME=/opt/install/hadoop260
export HIVE_CONF_DIR=/opt/install/hive/conf
export HIVE_AUX_JARS_PATH=/opt/install/hive/lib
export JAVA_HOME=/opt/install/jdk8
接下来输入:vi hive-site.xml,我发现没有hive-site.xml这个配置文件,所以我直接创建一个 添加以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/install/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!-- 如果是远程mysql数据库的话需要在这里写入远程的IP或hosts -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<!--需要填本地地址127.0.0.1-->
<value>jdbc:mysql://127.0.0.1:3306/hive?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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>ok</value>
</property>
<!--后面三条配置,为了后面连java-->
<property>
<name>hive.server2.authentication</name>
<value>NONE</value>
</property>
<property>
<name>hive.server2.thrift.client.user</name>
<value>root</value>
</property>
<property>
<name>hive.server2.thrift.client.password</name>
<value>root</value>
</property>
</configuration>
把mysql-connector-java-5.1.0-bin.jar包拖入到/opt/install/hive/lib目录下 创建hdfs文件夹,输入:hadoop fs -mkdir -p /opt/install/hive/warehouse ,与之前的对应 给创建的文件夹赋权,输入:
hadoop fs -chmod -p 777 /opt/install/hive/warehouse
-p:表示递归创建
hadoop fs -chmod -R 777 /opt/install/hive/warehouse
-R:表示以递回的方式逐个变更
第一次安装启动 需要先进入hive的bin目录下初始化hive,输入:./schematool -dbType mysql -initSchema,效果图如下:
接下来初始化元数据:
输入:nohup hive --service metastore & 启动hive,输入:hive 。