首先先说一下大概的步骤,就用四台为例,简单适合新手操作。
流程是:创建虚拟机,配置好;搭建linux系统;安装jdk(因为后面好多都依赖jkd);免密登录ssh;安装zookeeper;最后就是搭建高可用了。不熟练的小伙伴可以先试试单机模式。
这是我的四台机子加一个单机模式 。
1.创建虚拟机就不多说了,一直下一步下一步,重复四次创建4个。当然有疑问的可以私聊我,我帮你解决。创建好后就是修改配置
首先输入vi /etc/sysconfig/network-scripts/ifcfg-ens33,回撤
修改的几个部分我都写出来了。把dhcp(动态分配IP)改成static,最后一次添加IPADDR=192.168.153.135;
网关 GATEWAY=192.168.153.2;
子网掩码 NETMASK=255.255.255.0;
域名解析器 DNS1=8.8.8.8;esc , :wq 保存并退出
hostnamectl set-hostname + 名字 可以修改hostname
2.用linux系统安装数据库
1.下载mysql源安装包
$ wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
如果运行错误。先运行
yum install -y wget ,然后在运行安装包
2.安装mysql源
$ yum localinstall mysql57-community-release-el7-8.noarch.rpm
3.检查mysql源是否安装成功
$ yum repolist enabled | grep "mysql.*-community.*"
4.安装MySQL
这一步才是真正安装mysql
$ yum install mysql-community-server
5.启动MySQL服务并设置开机启动
$ systemctl start mysqld
$ systemctl enable mysqld
$ systemctl daemon-reload
6.端口开放
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
$ firewall-cmd --reload
7.修改root本地登录密码
1)查看mysql密码
grep 'temporary password' /var/log/mysqld.log
localhost:是初始密码;
mysql -uroot -p 登录;
set password for 'root'@'localhost'=password('password');修改密码
set global validate_password_policy=0; 设置密码的等级
set global validate_password_length=1; 设置密码的长度
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
给权限就登录成功了
3 安装jdk
我写了一个脚本,放在一个文件中,给权限,执行就自动安装了,非常方便
#!/bin/bash
jdk=true
installdir=/opt/soft
if [ ! -d "$installdir" ]
then mkdir $installdir
fi
if [ "$jdk" = true ]
then echo " ---------安装java JDK------------"
tar -zxf /opt/install/jdk-8u111-linux-x64.tar.gz -C /opt/soft/
mv /opt/soft/jdk1.8.0_111 /opt/soft/jdk180
echo "#jdk" >> /etc/profile
echo 'export JAVA_HOME=/opt/soft/jdk180' >> /etc/profile
echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
fi
运行完后,要source /etc/profile 更新一下
java -version ; javac 检查安装是否成功
4.ssh免密登录 注意的是每次只能生成一次,连接其他机器,断了就要重新生成
1 ssh-keygen -t rsa -P ""
根据RSA算法生成私钥和公钥
可以用 cd .ssh/
2 拷贝公钥给目标服务器
ssh-copy-id -i .ssh/id_rsa.pub -p22 [email protected]
3免密登录 ssh -p22 [email protected].***
另外三台,也这么操作,本机也要自连接
5 安装zookeeper集群
1解压zookeeper
tar -zxvf zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/soft
改名 mv zookeeper-3.4.5-cdh5.14.2.tar.gz ./ zookeeper345
2修改配置环境
vi /etc/profile
export ZOOKEEPER_HOME=/opt/soft/zookeeper345
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
3修改 zoo.cfg
dataDir=/opt/soft/zookeeper345/datatmp //新建datatmp
clientPort=2181
server.1=192.168.153.150:2888:3888
server.2=192.168.153.160:2888:3888 //一般写三个
server.3=192.168.153.170:2888:3888
4 在zookeeper345/ 下新建:datatmp,再建一个myid 写server对应的数字
6.高可用搭建
1 解压 tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz -C ../soft
改名 mv -zxvf hadoop-2.6.0-cdh5.14.2.tar ./ hadoop260
2 到/hadoop260/etc/hadoop ls查询目录
配置 hadoop.env.sh mapred.env.sh yarn.env.sh 三个环境
修改 JAVA_HOME= /opt/soft/jdk180 (jdk的安装路径)
3修改 core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 和slaves 重中之重
core-site.xml
fs.defaultFS
hdfs://mycluster/
hadoop.tmp.dir
/opt/soft/hadoop260/hadooptmp/
ha.zookeeper.quorum
yy150:2181,yy160:2181,yy170:2181
hadoop.proxyuser.bigdata.hosts
*
hadoop.proxyuser.bigdata.groups
*
hdfs-site.xml
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
yy150:9000
dfs.namenode.http-address.mycluster.nn1
yy150:50070
dfs.namenode.rpc-address.mycluster.nn2
yy160:9000
dfs.namenode.http-address.mycluster.nn2
yy160:50070
dfs.journalnode.edits.dir
/opt/soft/hadoop260/journaldata
dfs.namenode.shared.edits.dir
qjournal://yy150:8485;yy160:8485;yy170:8485/mycluster
dfs.ha.automatic-failover.enabled
true
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
30000
dfs.webhdfs.enabled
true
mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
yy180:10020
mapreduce.jobhistory.webapp.address
yy180:19888
yarn-site.xml
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
yrc
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
yy150
yarn.resourcemanager.hostname.rm2
yy160
yarn.resourcemanager.zk-address
yy150:2181,yy160:2181,yy170:2181
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
86400
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
vi ./slaves
yy150 yy160 yy170 yy180 写入的是你四个虚拟机的hostname。
5 配置环境 vi /etc/profile
#hadoop
export HADOOP_HOME=/opt/soft/hadoop260
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
source /etc/profile
6 同步另外三台
xsync /hadoop260
配置环境,在更新
切记 如果在格式化namenode不成功的时候,要先启动dfs start-dfs.sh
7 hadoop namenode -format 格式化namenode
将本机格式化后的hadooptmp文件同步到另一台备用的namenode里
scp -r ./hadooptmp root@yy160:/opt/soft/hadoop260
8初始化zookeeper(方便两个namenode交替使用)
hdfs zkfc -formatZK