春风十里不如你 —— Taozi - 安装 2023-05-28T12:39:00+08:00 Typecho https://www.xiongan.host/index.php/feed/atom/tag/%E5%AE%89%E8%A3%85/ <![CDATA[【Hadoop】全分布式安装集群]]> https://www.xiongan.host/index.php/archives/213/ 2023-05-28T12:39:00+08:00 2023-05-28T12:39:00+08:00 admin https://www.xiongan.host Hadoop全分布式安装

环境准备

首先做免密登录,三台虚拟机分别生成秘钥文件

//三台都需要操作
ssh-keygen -t rsa
//三台都需要打以下命令,进行秘钥分发
[root@tz1-123 ~]# ssh-copy-id tz1-123
[root@tz1-123 ~]# ssh-copy-id tz2-123
[root@tz1-123 ~]# ssh-copy-id tz3-123

修改防火墙设置后,查看三台虚拟机防火墙状态

//三台,禁止防火墙自启,立即生效
systemctl disable firewalld --now

安装JDK(3台),首先上传安装包到根目录,然后解压在/usr/lib/jvm

//修改环境变量/etc/profile
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_152
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

部署

首先将Hadoop软件包上传至/root中,并解压在/usr/local/src/下

68232799551

修改core-site.xml

//将以下内容加在<configuration></configuration>之间
<property>
<!--hdfs地址-->
<name>fs.defaultFS</name>
<value>hdfs://tz1-123:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop/data/tmp</value>
</property>

68232814920

修改hadoop-env.sh

//在最后添加以下一条
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_152

68232825693

修改hdfs-site.xml

//将以下内容加在<configuration></configuration>之间
<!--副本集个数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--SecondaryNamenode的http地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>tz3-123:50090</value>
</property>

68232849666

修改yarn-env.sh

//在最后添加以下一条
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_152

68232858392

修改yarn-site.xml

//将以下内容加在<configuration></configuration>之间
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>tz2-123</value>
</property>

68232868835

修改mapred-env.sh

//在最后添加以下一条
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_152

修改mapred-site.xml

[root@tz1-123 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@tz1-123 hadoop]# vim mapred-site.xml
//将以下内容加在<configuration></configuration>之间
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

修改slaves

[root@tz1-123 hadoop]# vim slaves
tz1-123
tz2-123
tz3-123

分发Hadoop软件包

[root@tz1-123 hadoop]# scp -r /usr/local/src/hadoop tz2-123:/usr/local/src/
[root@tz1-123 hadoop]# scp -r /usr/local/src/hadoop tz3-123:/usr/local/src/

修改/etc/profile

//在最后添加以下内容
export HADOOP_HOME=/usr/local/src/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
//修改完成后再次分发,并加在环境变量
[root@tz1-123 hadoop]# source /etc/profile
[root@tz1-123 hadoop]# scp /etc/profile tz2-123:/etc/
[root@tz1-123 hadoop]# scp /etc/profile tz3-123:/etc/

在tz1-123(master)上格式化namenode

hdfs namenode -format

68232948333

启动集群并测试

[hadoop@tz1-123 ~]$ start-dfs.sh
[hadoop@tz2-123 ~]$ start-yarn.sh
[root@tz1-123 hadoop]# jps
8096 NameNode
24690 NodeManager
24882 Jps
8293 DataNode
[root@tz2-123 ~]# jps
30709 NodeManager
24086 DataNode
30567 ResourceManager
781 Jps
[root@tz3-123 ~]# jps
23988 DataNode
604 Jps
30494 NodeManager

HDFS Shell操作

HDFS Shell操作以hadoop fs或hdfs dfs开头。

#查看某路径下文件夹
hadoop fs -ls HDFS路径
#在HDFS上创建文件夹
hadoop fs -mkdir HDFS文件夹路径
#在HDFS上创建文件夹(上级目录不存在)
hadoop fs -mkdir -p HDFS文件夹路径
#将本地文件上传到HDFS上
hadoop fs -put 本地文件路径 HDFS路径
#查看集群文件的内容
hadoop fs -cat HDFS文件路径
#从HDFS上下载文件到本地
hadoop fs -get HDFS文件路径 本地路径
#删除HDFS上空文件夹
hadoop fs -rmdir HDFS文件夹路径
#删除HDFS上的非空文件夹
hadoop fs -rm -r HDFS文件夹路径
#删除HDFS上的文件
hadoop fs -rm HDFS文件路径
#将HDFS上的路径剪切至另一个路径下
hadoop fs -mv HDFS源路径 HDFS目标路径
#将HDFS上的路径复制到另一个路径下
hadoop fs -cp HDFS源路径 HDFS目标路径
#在HDFS上创建一个文件
hadoop fs -touchz HDFS路径

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=35n3trqr2ug48

]]>
<![CDATA[【Kafka】安装及使用]]> https://www.xiongan.host/index.php/archives/201/ 2023-04-21T11:19:21+08:00 2023-04-21T11:19:21+08:00 admin https://www.xiongan.host Kafka及使用

安装

上传并解压在/usr/local/src,并重命名

68197866575

修改默认server.properties(kafka/config/),并修改/etc/profile文件,添加kafka环境变量

68197880632

分发并修改权限:

68197896085

68197905687

修改各节点的server.properties

slave01:id=1

slave02:id=2

68197924563

确保zookeeper集群正常

68197978101

启动Kafka服务(集群都要)

68197997350

使用

master上打开一个新终端,创建一个topic,名为tz123

/usr/local/src/kafka/bin/kafka-topics.sh --create --zookeeper master-tz:2181,slave01-tz:2181,slave02-tz:2181 --replication-factor 2 --topic tz123 --partitions 1
//Create参数代表创建, zookeeper参数为zookeeper集群的主机名 ,replication-factor代表生成多少个副本文件,topic 为topic的名称,partitions指定多少个分区

68198026614

在master创建一个生产者

/usr/local/src/kafka/bin/kafka-console-producer.sh --broker-list master-tz:9092,slave01-tz:9092,slave02-tz:9092 --topic tz123
//broker-list指定服务器,在Kafka 集群包含一个或多个服务器,这种服务器被称为 broker。Topic指定在hello上创建生产者。

68198067525

在slave1创建一个消费者

/usr/local/src/kafka/bin/kafka-console-consumer.sh --zookeeper master-tz:2181,slave01-tz:2181,slave02-tz:2181 --topic tz123 --from-beginning

68198071606

在生产者中输入信息,在消费者中查看信息

68198090163

在slave01上就可以收到消息

68198093635

举例2:Kafka与Flume联用

在/usr/local/src/flume/conf/新建一个文件flume-syslog-kafka.conf

a1.sources=r1
a1.channels=c1
a1.sinks=k1

a1.sources.r1.type=syslogtcp
a1.sources.r1.port=6868
a1.sources.r1.host=master

a1.channels.c1.type=memory

a1.sinks.k1.type=org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.brokerList=master:9092,slave1:9092,slave2:9092
a1.sinks.k1.topic=tz123 //这是你之前创建的topic主题名

a1.sinks.k1.channel=c1
a1.sources.r1.channels=c1

然后启动flume

flume-ng agent --conf /usr/local/src/flume/conf/ --name a1 --conf-file /usr/local/src/flume/conf/flume-syslog-kafka.conf

68198372156

在消费者slave01下查看

68198373574

]]>
<![CDATA[【ansible】linux下的集群管理服务]]> https://www.xiongan.host/index.php/archives/137/ 2022-11-08T17:33:00+08:00 2022-11-08T17:33:00+08:00 admin https://www.xiongan.host 介绍

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可

主机名ip角色
Server192.168.123.195主控
Backend01192.168.123.196被控01
Backend02192.168.123.197被控02

安装ansible

准备eple源

这边使用的是阿里云的源

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

下载完成后就可以安装ansible服务

yum install -y ansible openssh-clients

配置ansible

修改配置文件

 vim /etc/ansible/ansible.cfg
  //* 71 行,取消注释。开启关闭对未连接的主机 SSH 秘钥检测
  host_key_checking = False

编写 Ansible 主机管理文件

mv /etc/ansible/hosts /etc/ansible/hosts.bak ##先备份一下内容
vi /etc/ansible/hosts ##建立目标群组,并写入被管机(目标服务器)的 IP/FQDN
[tz1101]
backend01
backend02

测试连通性

ansible tz1101 -m ping

test-ping

Tip:配置ssh免密才可以出现上面结果的

配置ssh免密登陆

ssh-keygen

一路回车,默认免密通信

ssh-copy-id ip/主机名

把密钥发送到集群主机中

另外在需要/etc/hosts中写入主机名和ip

/etc/hosts

ansible应用

添加用户

为集群主机添加单独用户

ansible tz1101 -m user -a 'name=tao state=present'

添加完成用户后再设置一个密码,在server端用pip python 生成哈希密码

首先安装pip python

yum install python-pip -y

生成密码

ansible tz1101 -m user -a 'name=tao password=tarRU/F9EJjRU update_password=always'

查看一下

user

playbook剧本

测试集群安装一个httpd软件的playbook剧本

vim playbook_create_install.yml #编写剧本文件→安装软件
- hosts: tz1101 #集群组名
  tasks:
    - name: install vsftpd ##任务名称
      yum: name=vsftpd state=installed ##安装vsftpd
    - name: running and enabled
      service: name=vsftpd state=started enabled=yes ##设置开机自启动

httpd

使用tag标签

创建tag文件yml

tag

注:自定义了tag,他就会只执行带有tag=test2的内容其他标签内容不会执行

使用变量

自定义变量安装服务

- hosts: tz1101
  become: yes
  become_method: sudo
  tasks:
  - name: installed bao
    yum: name={{ item }} state=installed
    with_items:
      - vim-enhanced ##软件名
      - wget
      - unzip
    tags: Taozheng

bianliang

ansible-playbook bianliang.yml

bianliang

roles

内网中需要关闭防火墙和selinux

ansible tz1101 -a "setenforce 0 && systemctl stop firewalld"

在当前server主机内安装tree服务

yum install -y tree

群组下的主机也要安装tree软件

ansible tz1101 -m yum -a "name=tree state=installed"/*-m 使用模块 yum命令 -a是具体内容 name是tree state是操作安装

tree

创建roles子目录及内容

mkdir -p roles/ins_httpd/{files,tasks,vars}

回到roles,编写一个yml文件

Vim playbook_httpd.yml
- hosts: tz1101
  roles:
      - ins_httpd
编写vars下的main文件
vim roles/ins_httpd/vars/main.yml
packages:
 - httpd

创建任务剧本

编写tasks下的main文件
vim roles/ins_httpd/tasks/main.yml
- name: httpd is installed
  yum: name=httpd state=installed
  tags: install_httpd

- name: edit httpd.conf
  lineinfile: >
      dest=/etc/httpd/conf/httpd.conf
      regexp="{{item.regexp}}"
      line="{{item.line}}"
  with_items:
  - { regexp: "^#ServerName",line: "ServerName {{ansible_fqdn}}:80" }
  tags: edit_httpd.conf

- name: httpd is running and enabled
  service: name=httpd state=started enabled=yes

- name: put index.html
  copy: src=index.html dest=/var/www/html owner=root group=root mode=0644

playbook

执行剧本

ansible-playbook playbook_httpd.yml

role

role

查看写入的httpd的index.html

ansible tz1101 -m shell -a "curl localhost"

image.png

]]>