赞
踩
安装linux环境
一、防火墙
1、关闭防火墙 CentOS7安装方法:
]# service iptables stop systemctl stop firewalld.service
2、从开机启动项中关闭防火墙
]# chkconfig iptables off systemctl disable firewalld.service
3、查看防火墙状态
]# service iptables status systemctl status firewalld.service
4、查看防火墙的开机状态
]# chkconfig --list | grep iptables
//其余两台机器重复上述操作
二、主机名
]# vim /etc/sysconfig/network vim /etc/hostname
修改其中的host
HOSTNAME=node01 node01
HOSTNAME=node02 node02
HOSTNAME=node03 node03
2>修改网卡配置文件(配置静态的固定ip地址)
vim /etc/sysconfig/network-scripts/ifcfg-eth0 vim /etc/sysconfig/network-scripts/ifcfg-eth33
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes 修改ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static 修改BOOTPROTO=static
IPADDR=192.168.1.201 新增IPADDR=192.168.1.201
NETMASK=255.255.255.0 新增NETMASK=255.255.255.0
GATEWAY=192.168.1.2 新增GATEWAY=192.168.1.2
DNS1=114.114.114.114 新增DNS1=114.114.114.114
选择手动manual
添加IP地址
IPADDR:192.168.1.201
NetMask:255.255.255.0
GatWay:192.168.1.2
DNS: 8.8.8.8
配置域名映射:
]# vim /etc/hosts //三台机器一摸一样 vim /etc/hosts //三台机器一摸一样
192.168.1.201 node01 192.168.1.201 node01
192.168.1.202 node02 192.168.1.202 node02
192.168.1.203 node03 192.168.1.203 node03
同时在windows的域名映射文件C:/windows/System32/drivers/etc/hosts中加入:
192.168.1.201 node01
192.168.1.202 node02
192.168.1.203 node03
关闭selinux,否则会影响软件的正常使用:
vim /etc/selinux/config
设置selinux=disabled //三台机器同样改
1、修改linux的启动模式
vim /etc/inittab
将模式从5修改为3
id:5:initdefault:---》id:3:initdefault:
重启: reboot生效
关机:poweroff
-------------------------------------------------------------------------------------
四、在Linux下面安装jdk
6>卸载centeros自带的jdk(不卸载不稳定,有时会冲突)
rpm -qa|grep jdk
rpm -e java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 --nodeps
前提:创建目录soft
[root@node01 opt]# mkdir soft
1、安装JDK
当前目录:/opt
1°、解压
opt]# tar -zxvf soft/jdk-8u112-linux-x64.tar.gz
2°、重命名:
opt]# mv jdk1.8.0_112/ jdk
3°、将JAVA_HOME配置到linux的环境变量里面:
vim /etc/profile.d/bigdata-etc.sh
加入以下内容:
export JAVA_HOME=/opt/jdk
export PATH=$PATH:$JAVA_HOME/bin
4°、让环境变量生效:
source /etc/profile.d/bigdata-etc.sh
5°、测试jdk是否安装成功:
java -version
---------------------------------
Hadoop轻松安装前提~>配置ssh免密码登录:
进入到我的home目录
cd ~/.ssh
ssh-keygen -t rsa
一路回车
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上(.ssh/id_rsa.pub)
ssh-copy-id -i root@node01
ssh-copy-id -i root@node02
ssh-copy-id -i root@node03
根据提示输入当前机器的密码
验证:ssh node01 不需要再输入密码
/*
在node02机器上进行上述操作,生成公钥跟私钥后
ssh-copy-id -i root@node01
ssh-copy-id -i root@node02
ssh-copy-id -i root@node03
在node03机器上进行上述操作,生成公钥跟私钥后
ssh-copy-id -i root@node03
*/
--------------------------------------------------------------------
将node01上面的jdk同步到node02和node03上面的/opt目录下面
通过scp远程拷贝的命令:
scp -r /opt/jdk root@node02:/opt/
scp -r /opt/jdk root@node03:/opt/
同时将环境变量文件也拷贝到node02和nonde03上面的/etc/profile.d目录下面
scp /etc/profile.d/bigdata.sh root@node02:/etc/profile.d/
scp /etc/profile.d/bigdata.sh root@node03:/etc/profile.d/
为了让node02和node03上面的jdk生效,执行以下动作
source /etc/profile.d/bigdata.sh
第二步:配置ZK,在node01上面进行配置,同步到其它两台机器(同步:scp 跨越多台机器拷贝)
1°、解压:tar -zxvf zookeeper-3.4.6.tar.gz
2°、在conf目录下copy zoo.sample.cfg文件并改名为zoo.cfg
将dataDir修改为dataDir=/opt/zookeeper/data
新增如下内容
server.101=node01:2888:3888
server.102=node02:2888:3888
server.103=node03:2888:3888
server----》zk服务器
说明:
101/102/103 ---->zk集群中每一台zk的id标识
node01/2/3--->zk集群中的每一台zk的主机名或者ip地址
2888 ----->集群间各个server之间通信的端口
3888 ----->leader的通信端口
3°、在/opt/zookeeper目录下创建一个data目录,用于存放zk数据
4°、在data目录下绑定当前机器的zk-id(在myid下存储当前机器的唯一标识)
touch data/myid
将node01对应的zk-id添加进data/myid文件
echo 101 > myid 或者 vim myid
5°、将node01配置好的整个目录拷贝到node02和node03中去
scp -r /opt/zookeeper root@node02:/opt
scp -r /opt/zookeeper root@node03:/opt
6°、根据在zoo.cfg中的配置,修改data/myid文件中的对应id值
其中node02----->102
其中node03----->103
6.1>添加环境变量 /etc/profile.d
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
7°、分别在node01-node03的机器上面启动zk服务
zkServer.sh start
启动之后可以通过zkServer.sh status查看每一台zk的角色
有一个leader和两个follower
要达到的效果:
①在任意一台zookeeper server中,通过客户端连接,在其上手动创建一个znode,观察其余灵台server中是否出现了同样的znode
zkCli.sh -server node01:2181
②这三台zookeeper server中,杀死leader所对应的进程,另外两台follower的server必然重新选举出新的leader,另外一台就是follower
---------------------------------------------------
1)、解压,重命名,添加环境变量
将文件上传到/opt/soft/hadoop-2.4.6.tar.bz
1.1,/#opt/ tar -zxvf soft/soft/hadoop-2.4.6.tar.bz
1.2, mv hadoop-2.4.6.tar.bz hadoop
1.3, vim /etc/profile.d/bigdata-etc.sh
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
2)、配置
在/opt/hadoop下创建pid目录:mkdir /opt/hadoop/pid
hadoop-env.sh、yarn-env.sh、hdfs-site.xml、core-site.xml、mapred-site.xml、yarn-site.xml、slaves
1°、hadoop-env.sh ---->hadoop运行环境配置
修改JAVA_HOME
export JAVA_HOME=/opt/jdk
(pid目录是解决集群无法正常关闭hadoop no dataNode/namenode to stop)
export HADOOP_PID_DIR=/opt/hadoop/pid
export HADOOP_SECURE_DN_PID_DIR=/opt/hadoop/pid
2°、yarn-env.sh ---->yarn的运行环境配置
修改JAVA_HOME
export JAVA_HOME=/opt/jdk
export YARN_PID_DIR=/opt/hadoop/pid (hadoop no resourcemanager to stop)
3°、slaves ---->是datanode和nodemanager这些从节点的配置项
添加一下两行内容(就是一个datanode对应一个nodemanager,为的就是能够让nodemanager操作本地datanode中的数据,而尽量不要跨机器):
noede02
node03
4°, cd /opt/hadoop/etc/hadoop
vim hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>node01:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>node01:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>node02:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>node02:50070</value>
</property>
<!-- 指定NameNode的edits数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node01:8485;node02:8485;node03:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/hadoop-repo/journal</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-repo/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-repo/data</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
5°、配置core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-repo/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
</configuration>
6°、配置mapred-site.xml
<configuration>
<!-- mr依赖的框架名称 yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- mr转化历史任务的rpc通信地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node02:10020</value>
</property>
<!-- mr转化历史任务的http通信地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node02:19888</value>
</property>
<!-- 会在hdfs的根目录下面创建一个history的文件夹,存放历史任务的相关运行情况-->
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/history</value>
</property>
<!-- map和reduce的日志级别-->
<property>
<name>mapreduce.map.log.level</name>
<value>INFO</value>
</property>
<property>
<name>mapreduce.reduce.log.level</name>
<value>INFO</value>
</property>
</configuration>
7°、配置yarn-site.xml
<configuration>
<!-- 开启RM高可靠 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node02</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node03</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
8°、拷贝在node01上面配置的hadoop文件
scp -r /opt/hadoop root@node02:/opt
scp -r /opt/hadoop root@node03:/opt
3)、启动Hadoop集群
确保在每一台机器上面都有其对应的数据保存的目录
mkdir /opt/hadoop-repo/journal
scp -r hadoop-repo/ root@node02:/opt/
scp -r hadoop-repo/ root@node03:/opt/
1°、确保zk集群是启动的
zkServer.sh status
2°、启动journalnode集群
启动命令hadoop-daemon.sh start journalnode
可以通过jps查看到多了一个进程JournalNode
3°、对namenode进行格式化 //只能格式一次,失败后会导致ID冲突
在配置了NameNode机器中找一台,进行格式化,只格式化一次即可,
然后将生成的NameNode自身的元数据信息拷贝到另外一台NameNode的对应目录中区dfs.namenode.name.dir
在node01上面执行格式化:
hdfs namenode -format
将namenode元数据信息拷贝到node02上面去:
scp -r hadoop-repo/name/* root@node02:/opt/hadoop-repo/name/
4°、在namenode对应的任何一台机器上面格式化zkfc,目的在zk中创建维护namenode状态的目录
hdfs zkfc -formatZK
5°、分别启动hdfs和yarn
在node01上面执行如下命令:
start-dfs.sh
在node02上面执行如下命令:
start-yarn.sh
在node03上面执行如下命令:
yarn-deamon.sh start resourcemanager
以后再启动hadoop集群的时候:
先启动zk
然后启动hdfs,yarn和resourcemanager即可
注:/*
如果有各种原因造成namenode始终起不来,最有效的方法
方法一,
hdfs namenode -bootstrapStandby,然后重新启动
方法二,
1,把进程全关掉
2,进入zookeeper客户端 zkCli.sh
3,查看客户端里的进程 ls /
4,删除进程里的hadoop-ha delete /hadoop-ha/ns1/Active~ (tab补全)
5,删除zookeeper/data下除myid其余全部同级文件
6,删除hadoop-repo
7,重新开启zookeeper集群,journalnode集群,格式化等等
*/
----------------------------------------------------------------------
~~~>HBase分布式安装:
解压 opt]# tar -zxf soft/hbase-1.1.5-bin.tar.gz
重命名 opt]# mv hbase-1.1.5-bin hbase
添加至环境变量 export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin
配置 $HBASE_HOME/conf/hbase-env.sh、hbase-site.xml
$HBASE_HOME/conf/hbase-env.sh
export JAVA_HOME=/opt/jdk
export HBASE_MANAGES_ZK=false
注意:若是JDK1.8,需要在脚本文件【hbase-env.sh】注释掉下述两行配置信息:
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m
XX:MaxPermSize=128m"
$HBASE_HOME/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node01,node02,node03</value>
</property>
再配置一个conf/regionservers,添加两行内容:
node02
node03
scp -r /opt/hbase root@node02:/opt
scp -r /opt/hbase root@node03:/opt
scp -r /etc/profile.d/bigdata-etc.sh root@node02:/etc/profile.d/
scp -r /etc/profile.d/bigdata-etc.sh root@node03:/etc/profile.d/
让脚本文件中的环境变量立即生效:
source /etc/profile.d/bigdata-etc.sh
启动hbase集群(前提:启动zookeeper~>hadoop集群)
sh $HBASE_HOME/bin/start-hbase.sh
-----------------------------------------------------------------------------------------------
~~~>Flume组件安装步骤:
解压缩:opt]# tar -zxvf soft/apache-flume-1.6.0-bin.tar.gz
重命名:opt]# mv apache-flume-1.6.0-bin flume
添加到环境变量中
vim /etc/profile
export FLUME_HOME=/opt/flume
export PATH=$FLUME_HOME/bin
修改配置文件(脚本文件,配置文件)后缀为.sh的是脚本文件,可以直接运行
conf]# cp flume-env.sh.template flume-env.sh
添加JAVA_HOME
export JAVA_HOME=/opt/jdk
------------------------------------------------------------------------------------------------
sqoop安装:安装在一台节点上就可以了。
约定:安装目录为/opt/
下载之后上传sqoop到Linux,进行解压,
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/
重命名:
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop
配置SQOOP_HOME到环境变量中
vim /etc/profile.d/bigdata-etc.sh
export SQOOP_HOME=/opt/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
source vim /etc/profile.d/bigdata-etc.sh
将数据库连接驱动拷贝到$SQOOP_HOME/lib里
因为SQOOP要连接rdbms,所以需要将该数据的驱动jar包添加进sqoop的classpath中,所以将mysql的jar包上传至$SQOOP_HONE/lib,
mysql需要mysql-connector-java-5.1.32.jar以上版本支持。
jdk1.7以上
配置$SQOOP_HOME/conf/sqoop-env.sh
export HADOOP_COMMON_HOME=/opt/hadoop
export HBASE_HOME=/opt/hbase
export HIVE_HOME=/opt/hive
export ZOOCFGDIR=/opt/zookeeper/conf
~~>SQOOP安装验证
sqoop list-databases --connect jdbc:mysql://node01:3306 --username 'root' --password 'root'
information_schema
hive
mydb2
mysql
test
--------------------------------------------------------------------------------------------------
安装方式一:安装MySQL(离线)
操作目录:/opt/soft --->安装包所在目录(客户端,服务器端,mysql驱动jar包)
1°、查询linux中已有的mysql依赖包
rpm -qa | grep mysql
2°、删除linux中已有的mysql依赖包(`:飘号,在tab键上面)
rpm -e --nodeps `rpm -qa | grep mysql`
3°、安装服务端和客户端
soft]# rpm -ivh MySQL-server-5.1.73-1.glibc23.x86_64.rpm
soft]# rpm -ivh MySQL-client-5.1.73-1.glibc23.x86_64.rpm
4°、启动mysql server服务
service mysql start
5°、加入到开机启动项(查看服务状态)
chkconfig mysql on
6°、进行用户名密码设置
mysql_secure_installation
7°、对远程可访问的机器进行授权
[root@node01 soft]# mysql -hnode01 -uroot -proot
在mysql服务器登录:mysql -uroot -proot
执行以下语句:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';
mysql> flush privileges;
-----------------------------------------------------------------------------------------------------
~~>Hive的安装:
将Mysql驱动包拷贝到lib目录下 (hive客户端会同时连接mysql数据库和HDFS)
将其他的安装包传到softwore目录下
1°、解压Hive文件:
重命名,配置环境变量/etc/profile.d/bigdata.sh
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile.d/bigdata.sh
进入$HIVE_HOME/conf/修改文件
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
2°、修改$HIVE_HOME/conf的hive-env.sh,增加以下三行
export JAVA_HOME=/opt/jdk
export HADOOP_HOME=/opt/hadoop
export HIVE_HOME=/opt/hive
3°、修改$HIVE_HOME/conf/hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8</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>root</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/opt/hive/tmp</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/opt/hive/tmp</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/opt/hive/tmp</value>
</property>
4°、初始化hive元数据仓库
可以简写为:schematool -initSchema -dbType mysql
5°、启动hive
opt]# hive
注意:如果提示
WARN: Establishing SSL connection without server’s identity verification is not recommended.
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set.
For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’.
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide...
这个问题其实不影响你的程序的使用。这个错误是因为新版本(5.5.45)之后要求连接mysql时是否使用SSL连接,一般设置不使用(false)即可,更改hive-site.xml里的元数据注册里useSSL=false就行
jdbc:mysql://node01:3306/hive239?createDatabaseIfNotExist=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8
主要功能:
1)认证用户服务器确保数据发送确客户机服务器;
2)加密数据防止数据途窃取;
3)维护数据完整性确保数据传输程改变;
注:本文主要来自于学习笔记,如有侵权,请联系删除
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。