hadoop集群搭建
一、 环境说明
我使用的是笔记本电脑,一台8G内存,一台4G内存,然后在笔记本上搭建虚拟机centos7.0当作搭建hadoop的机器,最终的结果是,hadoop环境搭建好,一个主节点,一个从节点,虽然运行任务较慢,但是还是可以正常执行!两个节点,主节点分配了6G和4个处理器,每个处理器1核;从节点分配了3G和4个处理器,每个处理器1核。
我搭建的hadoop环境有一下环境:
hadoop-2.6.0-cdh5.6.0++hue-3.9.0-cdh5.6.0+sqoop-1.4.7.bin__hadoop-2.6.0+hive-1.1.0-cdh5.6.0+oozie-4.1.0-cdh5.6.0
其他环境:
Python2.7(centos7.0自带的)+mysql(5.6.44)+jdk8
二、 环境搭建
1. Linux系统准备
此操作在root用户下进行操作(除了第f和g步)
a) 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
b) 设置静态ip
我这设置的是桥接模式,这样可以和主机共同使用网卡,访问外网
设置虚拟机的ip(其中一台这样设置,另外一台设置方法相同):
c) 设置hostname,两台都进行设置
vi /etc/hostname
设置完成后重启,即可用xshell进行连接。
d) 更改hosts文件
e) 创建hadoop用户
useradd hadoop
创建用户hadoop
passwd hadoop
给已创建的用户hadoop设置密码
f) 配置免密登录(这是在hadoop下进行操作的)
登录hadoop用户:su - hadoop
进行免密登录配置:
①在apmaster上生产一对钥匙
ssh-keygen -t rsa
复制公钥拷贝到其他节点
ssh-copy-id apmaster
ssh-copy-id apnode1
②在apnode1上生产一对钥匙
ssh-keygen -t rsa
复制公钥拷贝到其他节点
ssh-copy-id apmaster
ssh-copy-id apnode1
g) 在hadoop用户下创建app目录和soft目录
mkdir app
mkdir soft
将需要安装的软件包存放到soft下
安装软件的目录为app目录
2. 安装jdk8并设置环境变量
此操作在root用户下进行操作
a) 卸载之前的jdk,确定是否自带jdk,有则卸载
查看安装的jdk: rpm -qa | grep jdk
卸载:rpm -e --nodeps 上面语句查询出的内容
b) 安装jdk的rpm安装包
rpm -i /soft/jdk8-linux-x64.rpm
c) 设置环境变量
[root@localhost opt]# vi /etc/profile
#编辑系统配置文件
在最后加入一下内容:
jdk8安装完毕。
3. 安装mysql
此操作在root用户下进行操作
说明:下面这个我是从网上copy的,时间久了忘了他的地址了,但是这是一篇很不错的文章,按照他的安装做即可,我安装的是mysql5.6.44差别不是很大
a) 检查下linux是不是已经安装了MySQL
rpm -qa | grep -i mysql
#如果安装了先卸载旧的版本
yum -y remove mysql...
b) 下载需要的安装包,下载地址:
https://dev.mysql.com/downloads/mysql/5.6.html#downloads
c) 开始逐个安装
rpm -ivh MySQL-server-5.6.20-1.el6.x86_64.rpm
rpm -ivh MySQL-devel-5.6.20-1.el6.x86_64.rpm
rpm -ivh MySQL-client-5.6.20-1.el6.x86_64.rpm
d) 修改配置文件位置并做相关设置
cp /usr/share/mysql/my-default.cnf /etc/my.cnf
vi /etc/my.cnf
#做如下配置,配置有些更改,因为hive中必须要latin1编码,否则会报错,所以这个地方进行了更改:
[client]
password = root123
port = 3306
default-character-set=latin1
[mysqld]
port = 3306
character_set_server=latin1
character_set_client=latin1
#linux下mysql安装完后是默认:表名区分大小写,列名不区分大小写; 0:区分大小写,1:不区分大小写
lower_case_table_names=1
#设置最大连接数,默认为 151,MySQL服务器允许的最大连接数16384
max_connections=1000
[mysql]
default-character-set = latin1
e) 初始化MySQL及设置密码
/usr/bin/mysql_install_db
service mysql start
查看密码
cat /root/.mysql_secret
f) 登录到mysql,第一次装没有密码,直接回车
mysql -uroot -p
#设置root用户的密码
mysql> set password=password('root123');
g) 设置允许远程登录
mysql> use mysql;
mysql> select host,user,password from user;
mysql> update user set host='%' where user='root' and host='localhost';
mysql> flush privileges;
mysql> exit;
h) 设置开机自启动
chkconfig mysql on
chkconfig --list | grep mysql
i) MySQL的默认安装位置说明
/var/lib/mysql/ #数据库目录
/usr/share/mysql #配置文件目录
/usr/bin #相关命令目录
/etc/init.d/mysql #启动脚本 注:卸载mysql的时候,将这些目录下的文件也删掉。
j) 创建hadoop集群所需要的库,如下:
create database oozie;
create database hive;
create database hue;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
4. 安装hadoop
此操作在hadoop用户下进行操作
a) 解压hadoop并更改目录名称:
tar -zxvf /home/hadoop/soft/hadoop-2.6.0-cdh5.6.0.tar.gz -C /home/hadoop/app/
mv /home/hadoop/app/hadoop-2.6.0-cdh5.6.0 /home/hadoop/app/hadoop-2.6.0
b) 修改配置文件
进入/home/hadoop/app/hadoop-2.6.0/etc/hadoop目录
配置文件core-site.xml修改:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://apmaster:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0/tmp</value>
</property>
<!-- OOZIE 添加代理-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
<!-- OOZIE 添加代理-->
<property>
<name>hadoop.proxyuser.oozie.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.oozie.groups</name>
<value>*</value>
</property>
</configuration>
配置文件hdfs-site.xml修改:
<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
</configuration>
配置文件mapred-site.xml修改:
<configuration>
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置文件yarn-site.xml修改:
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>apmaster</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>apmaster:10020</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>3072</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
</configuration>
shell脚本hadoop-env.sh修改:
子节点配置文件slaves修改:
c) 将hadoop目录复制到从节点上
scp -r /home/hadoop/app/hadoop-2.6.0 hadoop@apnode1:/home/hadoop/app/
5. 安装hive
此操作在hadoop用户下进行操作
a) 解压hive并更改目录名称:
tar -zxvf /home/hadoop/soft/hive-1.1.0-cdh5.6.0.tar.gz -C /home/hadoop/app/
mv /home/hadoop/app/hive-1.1.0-cdh5.6.0 /home/hadoop/app/hive-1.1.0
b) 配置文件hive-site.xml修改:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://apmaster:3306/hive?characterEncoding=utf8&createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</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>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root123</value>
<description>password to use against metastore database</description>
</property>
</configuration>
c) 将mysql的jar包加入lib文件夹下:
cp /home/hadoop/soft/mysql-connector-java-5.1.28.jar /home/hadoop/app/hive-1.1.0/lib/
d) 添加hive添到环境变量:
vi /etc/profile
添加
6. 安装sqoop
此操作在hadoop用户下进行操作
a) 解压hadoop并更改目录名称:
tar -zxvf /home/hadoop/soft/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /home/hadoop/app/
mv /home/hadoop