完全式分布系统
修改system eth0
参考资料:https://blog.51cto.com/12629984/1902969
1.删除原来eth0的配置信息,将eth1行的eth1改为eth0
vim /etc/udev/rules.d/70-persistent-net.rules
2.这个时候重启network服务,显示MAC地址与预想地址不符
service network restart
会有一行失败
3.最简单的办法直接删除记录的MAC地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0
删除 HWADDR=00:11:eg:33:12:df
4.再重启network服务查看是否OK
service network restart
修改主机名 vi /etc/sysconfig/network 改 HOSTNAME=主机名
vi/etc/hosts 添加 主节点和子节点
配置静态IP地址 vi/etc/sysconfig/network-scripts/ifcfg-eth0
文件修改为: ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.56.2
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
DNS1=192.168.56.1
关闭防火墙 service iptables stop
永久关闭防火墙 chkconfig iptables off
删除原有JDK rpm -e --nodeps
检查SSH是否安装 rpm -qa | grep rsync
安装SSH协议 yum install ssh yum install rsync
SSH是否安装成功 rpm -qa | grep openssh 在执行 rpm -qa | grep rsync
生成SSH公钥 ssh-keygen -t rsa 直接回车
ssh-copy-id -i ~/.ssh/id_rsa.pub root@主机名
环境变量 vi /etc/profile
export JAVA_HOME=/root/app/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/root/app/hadoop-2.6.0-cdh5.7.0
export PATH=$PATH:$HADOOP_HOME/bin
export HBASE_HOME=/root/app/hbase-1.2.0-cdh5.7.0
export PATH=$PATH:$HBASE_HOME/bin
export HIVE_HOME=/root/app/hive-1.1.0-cdh5.7.0
export PATH=$PATH:$HIVE_HOME/bin
export SQOOP_HOME=/root/app/sqoop-1.4.6-cdh5.7.0
export PATH=$PATH:$SQOOP_HOME/bin
配置hadoop
1. hadoop-env.sh
export JAVA_HOME=/root/app/jdk1.8.0_161
export HADOOP_HOME=/root/app/hadoop-2.6.0-cdh5.7.0
2.core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://(namenode的主机名):9000</value>
</property>
#可写可不写
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hdfs/tmp</value>
</property>
3.hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/root/data/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/root/data/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hdp-02:50090</value>
</property>
4.mapred-site.xml(cp mapred-site.xml.template mapred-site.xml)
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5.yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp-01</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>2</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.hostname</name>
<value>hdp-01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.hostname</name>
<value>hdp-01</value>
</property>
6.slaves
hdp-01
hdp-02
hdp-03
hdp-04
需要上传 /etc/profile /etc/hosts hadoop-2.6.0-cdh5.7.0 jdk1.8.0_161
scp -r 需要上传的文件 到那个机器上面的主机名:地址
scp -r /etc/profile hdp-02:/etc ($PWD的意思是上传到本文件夹的下面) cd /etc ; scp -r /etc/profile hdp-02:$PWD
格式化 Hadoop namenode -format
然后启动hadoop集群
配置zookeeper
vi zoo.cfg(cp zoo_sample.cfg zoo.cfg)
修改数据存储位置 dataDir=/root/data/zookeeper
在最下边加上 server.2=hdp-02:2888:3888
server.3=hdp-03:2888:3888
server.4=hdp-04:2888:3888
接着,到hdp-02上,新建目录/root/data/zookeeper,并在目录中生成一个文件myid,内容为2
接着,到hdp-03上,新建目录/root/data/zookeeper,并在目录中生成一个文件myid,内容为3
接着,到hdp-04上,新建目录/root/data/zookeeper,并在目录中生成一个文件myid,内容为4
修改完之后把zookeeper-3.4.5-cdh5.7.0传到hdp-03和hdp-04上面
zookeeper只能一个一个启动因此写一个脚本
zookeeper批量启动关闭脚本 文件名zkmanage.sh 赋与权限用./执行:chmod +x zkmanage.sh
#!/bin/bash
for host in hdp-02 hdp-03 hdp-04
do
echo "${host}:${1}ing......"
ssh $host "source /etc/profile;/root/app/zookeeper-3.4.5-cdh5.7.0/bin/zkServer.sh $1"
done
sleep 2
for host in hdp-02 hdp-03 hdp-04
do
ssh $host "source /etc/profile;/root/app/zookeeper-3.4.5-cdh5.7.0/bin/zkServer.sh status"
done
配置hbase
hbase.env.sh
export JAVA_HOME=/root/app/jdk1.8.0_161
export HBASE_MANAGES_ZK=false
hbase.site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://hdp-01:9000/base</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hdp-02:2181,hdp-03:2181,hdp-04:2181</value>
</property>
vi regionservers
hdp-02
hdp-03
hdp-04
修改完之后把hbase-1.2.0-cdh5.7.0传到hdp-02和hdp-03和hdp-04上面
启动 进入bin目录,启动 ./start-hbase.sh
启动hbase shell, 输入list 列出表格
下载MySQL
查看有无安装过mysql
rpm -qa|grep mysql
安装mysql服务
yum install mysql-server
设置开机自启动
chkconfig mysqld on
chkconfig --list mysqld
启动mysql
service mysqld start
root用户登陆
mysqladmin -u root password hadoop
mysql -u root -p
创建hive数据库用来保存hive元数据
create database hive;
使hadoop01(操作系统用户)用户可以操作数据库hive中的所有表:
grant all on hive.* to root@'(需要登录hive的主机名)' identified by 'hadoop';
grant all privileges on hive.* to root@'hdp-03' identified by 'hadoop';
flush privileges;
修改字符编码
/etc/my.cnf文件中的所有如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8
[client]
port=3306
default-character-set=utf8
配置hive
修改hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://(MySQL安装的主机名):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>hadoop</value>
</property>
</configuration>
修改hive-env.sh文件
export JAVA_HOME=/root/app/jdk1.8.0_161
export HADOOP_HOME=/root/app/hadoop-2.6.0-cdh5.7.0
追加mysql的jdbc驱动jar包
在hive解压目录的lib文件夹下添加mysql的jdbc驱动
修改完之后把hive-1.1.0-cdh5.7.0传到hdp-02和hdp-03和hdp-04上面
启动hive
进入Hive命令行,执行命令,创建一个名为test的表,并查询该表的记录数
create table test(id int);
select count(*) from test;
配置flume (在hadoop集群里 哪里需要采集信息那里就配置Flume)
vi flume-env.sh ( cp flume-env.sh.template flume-env.sh )
将export JAVA_OPTS 那行的注释去掉
修改export JAVA_HOME=/root/app/jdk1.8.0_161
***将dir-hdfs.conf导入到Flume中的bin目录下边
需要注意:ag1.sinks.sink1.hdfs.path =hdfs://hdp-01:9000/access_log/%y-%m-%d/%H-%M
中的hdp-01:9000 这个是NameNode的主机名
ag1.sources.source1.spoolDir = /root/data/log
从什么地方采集的信息
创建 源目录log 给与777权限 并且在log目录下存放需要采集的数据
执行命令
./flume-ng agent -c conf/ -f dir-hdfs.conf -n ag1 -Dflume.root.logger=INFO,console
配置sqoop (只要在hadoop集群里有MySQL 就可以使用sqoop导入导出)
注意:1.使用sqoop前需要导入json的包到sqoop的lib目录下
2.将hive/lib/hive.* 拷贝到sqoop的lib目录下
vi sqoop-env.sh (cp sqoop-env-template.sh sqoop-env.sh)
***export HADOOP_COMMON_HOME=/root/app/hadoop-2.6.0-cdh5.7.0
***export HADOOP_MAPRED_HOME=/root/app/hadoop-2.6.0-cdh5.7.0
export HBASE_HOME=/root/app/hbase-1.2.0-cdh5.7.0 #可以不配,我们很少用hbase导入导出
***export HIVE_HOME=/root/app/hive-1.1.0-cdh5.7.0
export ZOOCFGDIR=/root/app/zookeeper-3.4.5-cdh5.7.0 #可以不配,我们很少用zookeeper导入导出
之后要在本机的sqoop上传一个MySQL的jar包
验证是否成功
sqoop version
sqoop list-databases --connect jdbc:mysql://master:3306/ --username root -P
相关资料以及架包:
https://pan.baidu.com/s/12QRR9bWFvNRaBppUar1MeQ
提取码:239b