11 videos 📅 2024-05-20 09:00:00 America/Creston
2:05:45
2024-05-20 09:46:48
2:09
2024-05-20 12:30:32
2:41:18
2024-05-20 12:33:23
1:36:58
2024-05-21 08:00:54
5:24:36
2024-05-21 10:06:11
3:24
2024-05-22 06:36:04
9:25
2024-05-22 08:03:05
40:22
2024-05-22 08:14:12
2:49
2024-05-22 09:47:03
1:48:29
2024-05-22 09:50:24
1:57:28
2024-05-22 12:09:49

Visit the Apache Nifi GROUP 2 course recordings page

                WEBVTT

00:00:00.000 --> 00:00:01.860
Oh, excuse me, mister.

00:00:04.400 --> 00:00:06.740
How do I avoid the miss?

00:00:07.900 --> 00:00:09.480
Did I lose connection or?

00:00:11.180 --> 00:00:13.280
Yeah, we lost you, Odie.

00:00:13.700 --> 00:00:14.220
My bad.

00:00:14.600 --> 00:00:14.980
Oh, no worries.

00:00:16.840 --> 00:00:18.200
I think I got the wrong URL.

00:00:19.360 --> 00:00:20.660
Yeah, so what?

00:00:22.560 --> 00:00:23.460
Like when I put it, my bad,

00:00:23.620 --> 00:00:24.760
it keeps muting for some reason,

00:00:24.780 --> 00:00:25.940
but when I put in this one,

00:00:25.980 --> 00:00:27.580
it'll send me to the,

00:00:27.600 --> 00:00:28.840
so you know the original NAPA.

00:00:28.840 --> 00:00:30.480
Oh, so let's do this.

00:00:30.540 --> 00:00:31.760
Bring open a new tab.

00:00:33.580 --> 00:00:36.040
And if you can see my screen,

00:00:36.400 --> 00:00:38.460
I also have my NAPA up,

00:00:38.700 --> 00:00:40.140
but I have a new tab

00:00:40.140 --> 00:00:43.840
and the URL you go to is HTTP,

00:00:44.100 --> 00:00:47.560
not HTTPS because we're working on an unsecure port.

00:00:48.080 --> 00:00:51.680
So all you do is go to HTTP colon front slash front

00:00:51.680 --> 00:00:58.060
slash same IP address, 127.0.0.1, colon,

00:00:58.060 --> 00:01:01.200
and we're going to use a backup HTTP port.

00:01:01.560 --> 00:01:04.740
So we're using one eight zero eight zero.

00:01:05.020 --> 00:01:07.840
So that's one two seven zero zero one,

00:01:07.980 --> 00:01:09.900
colon one eight zero eight zero.

00:01:09.960 --> 00:01:12.700
Then you need to do a front slash

00:01:13.240 --> 00:01:16.420
and then you want to type NAPA dash registry,

00:01:16.720 --> 00:01:18.020
because if you don't,

00:01:18.100 --> 00:01:19.640
it's just going to take you to a page not found.

00:01:22.720 --> 00:01:24.200
Did that work for you?

00:01:25.240 --> 00:01:26.140
I think so, yeah.

00:01:26.140 --> 00:01:28.180
Yeah, you got it, you got it.

00:01:28.220 --> 00:01:30.300
All right, no worries.

00:01:31.880 --> 00:01:32.760
Leroy and,

00:01:33.400 --> 00:01:34.940
oh, I don't even see Richard.

00:01:35.740 --> 00:01:37.880
He might be called into it.

00:01:37.920 --> 00:01:38.840
Oh, there we go, Richard.

00:01:39.700 --> 00:01:42.200
Let's see what URL are you going to.

00:01:42.460 --> 00:01:43.200
So let me see.

00:01:43.520 --> 00:01:44.440
Leroy, give me just a second.

00:01:44.580 --> 00:01:45.800
We'll take a look at yours.

00:01:48.960 --> 00:01:51.440
127.0.1.8.0.9.5.0.3.

00:01:52.540 --> 00:01:55.520
Do you have both of the,

00:01:56.820 --> 00:01:58.800
you should have two command line boxes

00:01:58.800 --> 00:02:01.580
if you go down to your task bar.

00:02:03.020 --> 00:02:04.380
There you go.

00:02:05.740 --> 00:02:06.940
Here, I'll do this.

00:02:11.240 --> 00:02:13.880
I'm going to, I'll just take a look.

00:02:14.660 --> 00:02:17.520
Do we still need to keep the other one?

00:02:17.960 --> 00:02:18.700
Yes, we do.

00:02:19.660 --> 00:02:21.840
Well, luckily, it looks like we only closed NAFA.

00:02:24.120 --> 00:02:25.880
Richard only didn't start it.

00:02:27.140 --> 00:02:30.040
So, yeah, you need to keep your run NAFA going.

00:02:30.820 --> 00:02:33.880
Oh, I think Richard missed this step.

00:02:34.160 --> 00:02:35.720
Yeah, leave the other one running.

00:02:36.000 --> 00:02:37.580
We're just going to run two of them.

00:02:37.640 --> 00:02:39.360
I think Richard got on the call or something,

00:02:39.380 --> 00:02:42.400
so I'm going to just extract his and run it for him right quick.

00:02:42.400 --> 00:02:46.080
I'm having issues trying to rerun the original NAFA.

00:02:46.220 --> 00:02:46.920
I thought that.

00:02:47.300 --> 00:02:52.460
Okay, give me just two seconds and I will take a look at yours as well.

00:02:52.900 --> 00:02:53.420
Okay.

00:02:56.360 --> 00:03:03.660
I'm going to start Richard's and that way his will work and log in as well.

00:03:03.840 --> 00:03:05.440
So if you're looking at my screen, Peter,

00:03:05.600 --> 00:03:08.800
you should have two command line boxes open.

00:03:09.500 --> 00:03:10.020
Okay.

00:03:10.280 --> 00:03:13.640
And what I did is my Richard here had his already running.

00:03:14.060 --> 00:03:21.220
And so I just minimized it and went and extracted the NAFA registry zip file,

00:03:21.220 --> 00:03:24.620
went into the bin directory, double click run NAFA registry.

00:03:24.940 --> 00:03:27.080
It's going to open a new command line box.

00:03:27.660 --> 00:03:33.360
And when you see the Apache NAFA registry and the version code,

00:03:33.420 --> 00:03:34.720
then it should be up and running.

00:03:34.780 --> 00:03:35.640
Yep, I see that one.

00:03:35.640 --> 00:03:36.900
Okay, perfect.

00:03:37.740 --> 00:03:45.720
And so I'm going to talk to you about 0.1.

00:03:52.600 --> 00:03:53.860
There we go.

00:03:54.460 --> 00:03:57.760
All right, so Peter, yep, it looks like you're in.

00:03:59.360 --> 00:04:01.440
All right, and I know Richard is going to go.

00:04:01.880 --> 00:04:04.480
All right, looks like everyone made it.

00:04:04.480 --> 00:04:07.440
So this is registry.

00:04:08.860 --> 00:04:12.060
Like I said, it is a sub project to NAFA.

00:04:13.280 --> 00:04:18.100
The same folks that maintain NAFA,

00:04:18.640 --> 00:04:25.120
also there's committers that maintain registry as well.

00:04:25.700 --> 00:04:28.120
Registry is a sub project.

00:04:29.000 --> 00:04:32.620
Like I said earlier, it's a complementary application to NAFA.

00:04:32.620 --> 00:04:35.240
It's like that translation layer.

00:04:36.120 --> 00:04:40.620
So what it does is it provides a central location for the storage

00:04:40.620 --> 00:04:47.000
and management of shared resources across one or many NAFA instances.

00:04:47.340 --> 00:04:51.280
Remember, NAFA is scalable to hundreds, thousands of nodes.

00:04:51.860 --> 00:04:56.500
And so, you know, I've seen multiple scenarios,

00:04:56.500 --> 00:04:59.780
but usually what I've seen is like you may have a dev system,

00:04:59.780 --> 00:05:01.960
a prod, a dev-tested prod.

00:05:03.180 --> 00:05:07.740
And depending on the system, it reaches out to NAFA registry.

00:05:08.120 --> 00:05:12.020
It grabs the flows it needs that have been checked in from dev.

00:05:12.940 --> 00:05:15.440
It grabs those flows and runs them.

00:05:16.380 --> 00:05:20.920
But, you know, you may have one registry for all, you know,

00:05:20.960 --> 00:05:26.280
three different networks, or you may have a registry for its own

00:05:26.280 --> 00:05:33.080
and utilize the backing of GitHub or GitLab to replicate that code

00:05:33.080 --> 00:05:36.780
to other systems and space levels, those types of things.

00:05:37.440 --> 00:05:44.040
But registry is there to keep track of all of our data flows

00:05:44.040 --> 00:05:47.460
for the most part, right, for storing and managing version flows.

00:05:48.400 --> 00:05:51.020
It's integrated within NAFA completely.

00:05:51.620 --> 00:05:55.420
We are going to set that up because right now,

00:05:55.420 --> 00:05:58.780
when you work within NAFA, there's no hint of registry.

00:05:59.200 --> 00:06:01.020
But there's a couple things we're going to do,

00:06:01.280 --> 00:06:03.740
and it's just going to flip all kinds of switches underneath.

00:06:05.080 --> 00:06:08.140
So anyway, so that is NAFA registry.

00:06:09.600 --> 00:06:14.020
What I like to do is there's a little wrench icon at the top right.

00:06:14.760 --> 00:06:17.220
If you can click on that, that's our settings.

00:06:19.840 --> 00:06:26.600
And the settings in this, again, is very basic and very, you know,

00:06:26.660 --> 00:06:29.180
it's a translation and a place to store stuff.

00:06:29.700 --> 00:06:33.880
So if you go to the settings, you can actually click New Bucket.

00:06:34.660 --> 00:06:40.400
If you can click New Bucket, say, you know, name your bucket.

00:06:40.840 --> 00:06:44.600
I'm going to name mine New Bucket.

00:06:45.660 --> 00:06:46.420
Description.

00:06:48.060 --> 00:06:49.700
Name it a description.

00:06:54.540 --> 00:06:56.340
And say Create.

00:06:58.460 --> 00:07:01.080
And so after that, you should see at the bottom right,

00:07:01.220 --> 00:07:03.740
a Success Bucket is created.

00:07:05.240 --> 00:07:08.800
Once we have this bucket, we can delete it.

00:07:08.920 --> 00:07:10.600
We can manage it.

00:07:10.940 --> 00:07:13.860
So if your bucket is created,

00:07:14.320 --> 00:07:18.540
you can click the little pencil on the right to manage that bucket.

00:07:19.480 --> 00:07:25.800
When you go into that bucket, you'll have your name, description.

00:07:26.040 --> 00:07:27.960
Again, you can share that.

00:07:28.360 --> 00:07:31.880
Permission settings, where you can actually make this publicly available.

00:07:32.880 --> 00:07:36.860
Bundle settings, you know, allow bundle overwrite.

00:07:36.860 --> 00:07:42.820
You know, it allows the released bundles in the bucket to be overwritten.

00:07:43.780 --> 00:07:46.080
And then also the big one is the policy.

00:07:46.720 --> 00:07:54.440
So once this is installed and up and running on your system,

00:07:55.320 --> 00:07:57.400
you're going to have policies in place.

00:07:57.460 --> 00:08:01.440
You're going to have username, passwords, and identity management,

00:08:01.940 --> 00:08:03.760
certificate, cat cards, you name it.

00:08:03.760 --> 00:08:08.640
And so, you know, there will be policies set up that says, you know,

00:08:08.660 --> 00:08:12.460
Tom can log in, but he can only see this bucket.

00:08:13.040 --> 00:08:15.800
Or Tom can log in and see all the buckets.

00:08:16.840 --> 00:08:21.260
He can then, you know, maybe get another permission to allow him to delete

00:08:21.260 --> 00:08:23.240
buckets and those types of things.

00:08:23.460 --> 00:08:26.760
So every one of these actions can be broken apart

00:08:27.360 --> 00:08:30.140
and assigned to different individuals and groups.

00:08:30.760 --> 00:08:33.620
And it goes into the multi-tenancy.

00:08:34.020 --> 00:08:36.100
So that's the reason I mention these things,

00:08:36.180 --> 00:08:38.720
is we haven't talked about multi-tenancy yet.

00:08:39.720 --> 00:08:45.580
But I like pointing out some of these things that we see in the application.

00:08:45.700 --> 00:08:48.820
So when we do talk about multi-tenancy, it kind of brings it back together.

00:08:49.580 --> 00:08:51.480
But anyway, so you have those policies.

00:08:52.300 --> 00:08:53.840
We can't really create new policies.

00:08:53.940 --> 00:08:58.120
We don't really have a I damn solution.

00:08:58.120 --> 00:09:02.640
You know, any kind of identification service, you know,

00:09:02.700 --> 00:09:05.920
we're not running key cloak or any of those types of things.

00:09:06.920 --> 00:09:10.620
So, you know, we have just a regular page.

00:09:10.780 --> 00:09:12.160
We don't even have a username and password.

00:09:13.120 --> 00:09:15.800
So anyway, so you should have now a new bucket.

00:09:16.840 --> 00:09:19.000
That bucket should be graded.

00:09:19.500 --> 00:09:23.860
And you have NAFA registry up and running.

00:09:23.860 --> 00:09:26.320
You should be good to go.

00:09:28.580 --> 00:09:37.260
So with that being said, that is the majority of NAFA registry.

00:09:38.560 --> 00:09:42.560
If security was enabled, we could add users.

00:09:43.320 --> 00:09:50.060
If we had a whole identity system, we could then enable that.

00:09:50.380 --> 00:09:52.260
We could change our usernames.

00:09:52.260 --> 00:09:54.760
The about is pretty simple.

00:09:55.000 --> 00:10:00.360
There's just not a lot of things, you know, to go through with registry.

00:10:00.760 --> 00:10:03.080
But anyway, so we've got a new bucket.

00:10:04.020 --> 00:10:06.540
What I like to do, just because I don't like typing,

00:10:07.500 --> 00:10:11.380
is I like to take the URL that we went to,

00:10:11.700 --> 00:10:15.160
not the whole URL because it's going to add administration and workflow,

00:10:15.160 --> 00:10:21.900
but the HTTP 127001, call it 18080 slash NAFA registry.

00:10:21.960 --> 00:10:26.820
I just like to copy it because we need to tell NAFA where our registry is at.

00:10:28.160 --> 00:10:31.500
So, you know, if you can actually just, it's pretty easy to remember.

00:10:31.520 --> 00:10:32.900
You can type it out as well.

00:10:33.120 --> 00:10:35.440
But let's go back to our NAFA system.

00:10:36.620 --> 00:10:39.420
Let's go to the main canvas.

00:10:40.820 --> 00:10:45.400
And you all should, you may have three, four different processor groups.

00:10:45.420 --> 00:10:46.460
I've got a couple.

00:10:47.420 --> 00:10:50.780
But, you know, one of the things you should be able to do

00:10:51.420 --> 00:10:55.020
is go back to the main canvas where this is laid out.

00:10:55.500 --> 00:11:00.480
So registry is a controller service, right?

00:11:00.740 --> 00:11:05.580
So, you know, you don't want everyone having to configure their own registry.

00:11:05.580 --> 00:11:11.080
You know, you have a registry setup where people can configure buckets,

00:11:11.600 --> 00:11:13.960
but the registry service is shared.

00:11:14.460 --> 00:11:18.480
So, you know, we've got to configure a new controller service for this.

00:11:18.820 --> 00:11:23.520
Luckily, it's a lot easier than a CSV writer, reader, JSON, you know, reader.

00:11:24.360 --> 00:11:31.340
So what we do, go to your hamburger menu and go to controller settings.

00:11:31.340 --> 00:11:36.480
So if you go into your controller settings, you know, you have a general tab,

00:11:36.520 --> 00:11:41.280
a management of controller services, you have a reporting task tab,

00:11:41.740 --> 00:11:44.580
and you have a registry client tab.

00:11:44.600 --> 00:11:46.480
And that's where we want to be.

00:11:47.640 --> 00:11:51.720
And so this controller service is registry only.

00:11:52.080 --> 00:11:55.200
So we need to tell NAFA how to get to registry.

00:11:55.840 --> 00:11:58.540
So if you are on the registry clients tab,

00:11:58.540 --> 00:12:03.120
you should be able to see a little check box to the right that says,

00:12:03.340 --> 00:12:05.340
register a new registry client.

00:12:06.120 --> 00:12:10.280
So click on that and give it a name.

00:12:10.520 --> 00:12:16.320
So we are going, I'm going to just put, you know, something easy.

00:12:16.820 --> 00:12:18.720
Oh, that's the wrong screen.

00:12:22.360 --> 00:12:23.240
Oh, it was the right screen.

00:12:23.340 --> 00:12:25.080
Oh, latency was horrible on that one.

00:12:25.080 --> 00:12:34.600
I'm going to give you the description and the type.

00:12:35.280 --> 00:12:39.160
So right now we only have, you should only have one drop down, right?

00:12:39.240 --> 00:12:43.040
You know, some controller services, you will have, you know,

00:12:43.060 --> 00:12:45.520
a drop down of 10, 15 different selections.

00:12:46.160 --> 00:12:48.420
But luckily for registry, there's only one.

00:12:48.720 --> 00:12:52.620
Now it is set up for a drop down because in the future,

00:12:53.400 --> 00:12:56.980
you're going to be able to, you can still run multiple registries.

00:12:57.200 --> 00:13:00.440
You're going to be able to run multiple versions of a registry.

00:13:01.360 --> 00:13:05.780
So anyway, so NAFA registry client one, two, six selected and I'm going to say add.

00:13:06.640 --> 00:13:09.680
But if you notice, we really didn't tell it anything where,

00:13:09.780 --> 00:13:11.420
how to even get to our registry,

00:13:12.060 --> 00:13:16.480
which is an enhancement request I put in because we should be able to tell

00:13:16.480 --> 00:13:18.380
how to get to registry when we're creating.

00:13:19.020 --> 00:13:25.220
So when you create this, you should have a little yield sign on the left

00:13:25.220 --> 00:13:29.540
telling you that the URL is invalid because the URL is required.

00:13:30.320 --> 00:13:34.260
And so what we're going to do is go to the far right

00:13:34.260 --> 00:13:37.880
and edit our registry client information.

00:13:38.960 --> 00:13:40.940
And then so if you go to the properties,

00:13:41.180 --> 00:13:44.960
you should see URL and SSL contact service.

00:13:44.960 --> 00:13:47.820
The only one we need is a URL.

00:13:48.480 --> 00:13:53.880
So I'm going to copy, I'm going to paste the URL that I copied from my NAFA registry.

00:13:54.920 --> 00:13:56.820
I'm going to take that.

00:13:57.740 --> 00:14:03.120
I want to make sure that after the colon 18 0 8 0,

00:14:03.420 --> 00:14:06.160
that I have a front slash NAFA registry.

00:14:06.540 --> 00:14:08.460
I don't have another front slash.

00:14:08.460 --> 00:14:15.820
I don't have any of the other, you know, some folders that's listed there.

00:14:16.100 --> 00:14:17.420
You know, have none of that.

00:14:17.740 --> 00:14:21.080
So just make sure you have slash NAFA registry.

00:14:21.820 --> 00:14:26.140
And then when I have that, I'm going to say, OK, update.

00:14:26.380 --> 00:14:30.580
It's going to think a minute because it's going to reach out and talk to it.

00:14:33.220 --> 00:14:35.180
And it should be good to go.

00:14:35.180 --> 00:14:38.400
So you should no longer have a yield sign.

00:14:39.340 --> 00:14:41.960
So with this, you know, with this controller service, though,

00:14:41.960 --> 00:14:46.220
we don't have to start it and the configuration is a lot easier.

00:14:47.600 --> 00:14:50.460
So once that, let me make sure everyone has that.

00:14:50.480 --> 00:14:51.960
I'm going to look around.

00:14:55.320 --> 00:14:57.200
There's looking good.

00:14:58.860 --> 00:15:00.020
Petersons, Richard.

00:15:00.880 --> 00:15:02.720
OK, Leroy, are you having a?

00:15:02.720 --> 00:15:05.980
Yeah, it looked like it was working and then it's not.

00:15:06.460 --> 00:15:07.840
OK, let's let's say look.

00:15:08.380 --> 00:15:13.180
So you're on the wrong port up there where it says colon 80 80.

00:15:13.360 --> 00:15:16.100
You want to do one eight zero eight zero.

00:15:16.260 --> 00:15:17.600
Put one in front of that.

00:15:18.980 --> 00:15:22.080
And this day three of me talking so much.

00:15:22.600 --> 00:15:25.460
So it could also be my voice is just like starting to crackle.

00:15:25.500 --> 00:15:26.440
But yeah, it's 18.

00:15:26.780 --> 00:15:27.260
Perfect.

00:15:28.140 --> 00:15:31.960
So now that you're there, let's go ahead and go and create a new bucket.

00:15:31.960 --> 00:15:35.540
So get your rich icon in the top right.

00:15:37.620 --> 00:15:38.840
And say new bucket.

00:15:40.220 --> 00:15:40.700
All right.

00:15:41.840 --> 00:15:44.200
So put in a name for your bucket.

00:15:46.440 --> 00:15:48.300
Whatever you want, bucket works.

00:15:48.640 --> 00:15:49.720
Put in a description.

00:15:51.640 --> 00:15:53.360
OK, and say create.

00:15:54.820 --> 00:15:54.900
Perfect.

00:15:55.240 --> 00:15:55.800
And success.

00:15:56.020 --> 00:15:57.460
The bucket has been created.

00:15:58.300 --> 00:16:01.000
And so this is the name of your first bucket.

00:16:01.000 --> 00:16:05.280
If you want to go over to the pencil on the right, that's how you would manage this bucket.

00:16:05.280 --> 00:16:06.720
You can change the names.

00:16:07.140 --> 00:16:10.040
You can do all kinds of stuff here.

00:16:11.040 --> 00:16:17.320
If security was set up, you could add users to this bucket and groups and those types of things.

00:16:17.600 --> 00:16:20.980
You know, to allow for that multi-tenancy of registry.

00:16:21.760 --> 00:16:24.520
But for now, this is what the settings that we have.

00:16:24.860 --> 00:16:27.020
So if you can just go ahead and close that.

00:16:28.480 --> 00:16:29.920
And I think you're good.

00:16:29.920 --> 00:16:33.260
So go back to your NAFA.

00:16:34.380 --> 00:16:35.440
You know, that one.

00:16:35.440 --> 00:16:36.000
There we go.

00:16:36.200 --> 00:16:40.660
And go back to the parent, your top level canvas.

00:16:41.300 --> 00:16:42.260
There you go. Perfect.

00:16:42.660 --> 00:16:45.560
You can go to hamburger menu, controller settings.

00:16:48.480 --> 00:16:51.620
And then over there on registry clients, click that tab.

00:16:53.320 --> 00:16:55.380
All the way to the right, click plus.

00:16:56.120 --> 00:16:57.360
You got it.

00:16:57.360 --> 00:16:59.240
Name of your registry.

00:16:59.900 --> 00:17:01.280
This can be any name you want.

00:17:01.420 --> 00:17:03.880
Description of that registry.

00:17:04.940 --> 00:17:05.860
Any description.

00:17:07.340 --> 00:17:08.780
And then say add.

00:17:10.140 --> 00:17:12.760
So if you notice on the left, you got a little yield.

00:17:13.020 --> 00:17:14.420
That's because of URL, right?

00:17:14.500 --> 00:17:15.160
So that's it.

00:17:15.400 --> 00:17:16.340
You got it.

00:17:16.780 --> 00:17:17.600
I got properties.

00:17:18.720 --> 00:17:19.200
URL.

00:17:20.280 --> 00:17:23.100
And then we want to post the registry URL.

00:17:23.220 --> 00:17:24.140
So I'll tell it to you.

00:17:25.260 --> 00:17:36.380
Http colon 127.0.0.1 colon 18080 front slash NAFA dash registry.

00:17:36.960 --> 00:17:37.140
Okay.

00:17:37.900 --> 00:17:38.520
Update.

00:17:40.320 --> 00:17:40.360
Perfect.

00:17:40.680 --> 00:17:46.220
Go ahead and hit the refresh on the bottom left.

00:17:46.320 --> 00:17:47.800
You hover over your yield.

00:17:47.980 --> 00:17:49.140
Oh, Http.

00:17:49.820 --> 00:17:51.080
Let's see.

00:17:51.400 --> 00:17:52.080
There we go.

00:17:52.080 --> 00:17:54.260
It's hyper hyper text protocol.

00:17:55.020 --> 00:17:55.080
Okay.

00:17:55.740 --> 00:17:56.080
So Http.

00:17:56.840 --> 00:17:57.080
All right.

00:17:57.120 --> 00:17:57.440
Perfect.

00:17:57.580 --> 00:17:59.260
Go ahead and close that window.

00:18:00.480 --> 00:18:02.040
And you are now where we are.

00:18:02.820 --> 00:18:06.320
So let me bring my window back open.

00:18:08.580 --> 00:18:09.080
Okay.

00:18:09.640 --> 00:18:10.860
So that's it.

00:18:11.340 --> 00:18:21.480
That's all it takes to get NAFA registry installed up and running and NAFA to recognize the registry

00:18:21.480 --> 00:18:23.260
for us to use.

00:18:24.080 --> 00:18:28.600
So it's a very easy process, I feel like.

00:18:29.500 --> 00:18:32.560
So, you know, there's a couple of nuances along the way.

00:18:32.800 --> 00:18:35.700
But getting registry up and running is rather quickly.

00:18:36.120 --> 00:18:41.140
But now we've got our NAFA configured, our registry is up and running.

00:18:41.440 --> 00:18:43.020
Let's check some code in.

00:18:43.020 --> 00:18:53.120
So if you right click on your processor group, you should see a new category that says version.

00:18:54.380 --> 00:19:00.920
You know, it had configure, variable, start, stop, all the ones that we've been dealing with the last couple days.

00:19:01.280 --> 00:19:02.780
But now we have version.

00:19:04.020 --> 00:19:11.500
So if you click on or don't click on version, but you hover over version, you should be able to see something that says start version control.

00:19:11.500 --> 00:19:21.120
So click on that and it's already going to populate with your test registry, the name of the registry you gave it.

00:19:21.260 --> 00:19:26.080
If you have access to multiple registries, it's going to list those.

00:19:26.680 --> 00:19:30.020
Then your bucket should be already populated as well.

00:19:30.340 --> 00:19:32.000
I named mine new bucket.

00:19:32.420 --> 00:19:40.300
So what it did is, you know, it reached out and got a list of buckets that I have access to and pulled those in for me.

00:19:41.320 --> 00:19:45.300
And then now I have flow name, flow description, and version comments.

00:19:46.800 --> 00:19:53.660
So for flow name, I'm actually just going to put first sample flow.

00:19:55.880 --> 00:19:58.800
I don't say underscore and those other things.

00:19:59.180 --> 00:20:01.000
I'm a heavy Linux user.

00:20:01.060 --> 00:20:05.300
I don't really like Windows, so that's why you'll see like no capitalization.

00:20:05.300 --> 00:20:10.300
I try to keep capitalization out and I don't like using spaces.

00:20:11.180 --> 00:20:17.280
But anyway, so I need my first underscore sample, underscore flow, you name it, whatever you want.

00:20:18.640 --> 00:20:19.240
Flow description.

00:20:19.460 --> 00:20:24.220
Again, this is a flow description.

00:20:26.160 --> 00:20:30.800
So, you know, it's whatever description, you know, you like.

00:20:30.800 --> 00:20:40.580
Now, with all that being said, if you have policies in place for, say, software engineers where they have to comment code,

00:20:40.920 --> 00:20:43.380
they have to comment it before it gets checked in.

00:20:43.540 --> 00:20:53.720
And actually I know most organizations will at least ask that you please comment your code before you check it in.

00:20:53.720 --> 00:21:03.400
The comments that go into the version comments are comments that's also going to be stored in your version control system.

00:21:04.500 --> 00:21:09.100
So registry is great and all, but how do you package this with the rest of your software?

00:21:09.240 --> 00:21:14.380
How do you package this as part of your Ansible and Terraform and those types of things?

00:21:15.980 --> 00:21:21.760
So, you know, registry is backed by GitLab or GitHub or Azure DevOps.

00:21:21.760 --> 00:21:29.040
You know, whatever version control repo you're using, NaFi usually knows how to deal with it.

00:21:29.460 --> 00:21:35.680
But anyway, so the version comments that go in here is going to be seen in NaFi registry.

00:21:36.240 --> 00:21:44.920
But when registry automatically checks this in to GitHub, for example, those comments will be there as well.

00:21:44.920 --> 00:21:52.080
Because, of course, it's going to check all these JSON documents it needs to run these flows into registry.

00:21:53.060 --> 00:21:59.920
Now, I mentioned NaFi stateless, for instance, and I've mentioned Minify and some others.

00:22:00.380 --> 00:22:01.920
Those also use registry.

00:22:02.900 --> 00:22:13.160
So just because they are headless, there's no UI, you know, they're built to run on the edge or in a cluster or as a microservice.

00:22:13.160 --> 00:22:25.020
When deploying your data flow in that type of fashion, it will actually come back and read the NaFi registry to understand what flow it needs to run.

00:22:25.780 --> 00:22:36.200
So keep that in mind as well as NaFi is, you know, a user of registry, but all the other components are users as well.

00:22:36.200 --> 00:22:44.100
Registry is that sole core that handles all the versioning control within the NaFi ecosystem.

00:22:45.160 --> 00:23:02.300
And then, you know, you'll see in like GitHub, if you have a new project in GitHub where this is being backed up to, you know, you'll have buckets that are separated by directories and things like that in GitHub.

00:23:03.480 --> 00:23:18.360
Setting up GitHub or setting that up is not part of this class, but there is tons and tons of examples online of how to connect it to all these different, you know, versioning control.

00:23:18.560 --> 00:23:25.040
And actually, all it is is a as a configuration block in your config file of which service to connect to.

00:23:25.040 --> 00:23:30.720
So anyways, these version comments is going to be what is sent out.

00:23:30.820 --> 00:23:35.680
So I'm going to just put this is a test comment.

00:23:37.240 --> 00:23:38.340
Then we'll hit save.

00:23:40.280 --> 00:23:43.040
So what changed with our process group?

00:23:44.080 --> 00:23:50.680
You may have noticed a small little change that is different than the other process groups.

00:23:50.680 --> 00:23:56.660
But if you look at the top left, you will see a little green check mark.

00:23:57.680 --> 00:24:10.920
That means that that data flow has been checked in and there's no updates or changes or versioning control is stopped on it or anything else.

00:24:10.920 --> 00:24:19.900
That means that little green check box means you have the latest, greatest from registry that it knew about.

00:24:21.140 --> 00:24:27.820
So if you go back to our registry and hit refresh on your buckets.

00:24:37.500 --> 00:24:39.100
Oh, there we go.

00:24:39.600 --> 00:24:47.840
And if you go to your registry, you should have, you know, just click on the top left, not by registry or explore registry now.

00:24:48.580 --> 00:24:52.980
There's a little drop down that says all buckets or whichever one you need.

00:24:52.980 --> 00:24:55.660
We only have one, so we just say all buckets.

00:24:56.760 --> 00:25:02.080
We should see now our first sample flow in new bucket.

00:25:03.360 --> 00:25:06.700
So, you know, it's going to give us the bucket identifier.

00:25:07.000 --> 00:25:08.500
Everything gets you ready.

00:25:09.280 --> 00:25:19.980
It's going to give a flow identifier description of the bucket, of the flow, not the bucket, in any kind of change log.

00:25:19.980 --> 00:25:30.760
So just like we have that provenance in NIFI, keeping track of all those changes, registry is keeping track of any changes as well.

00:25:31.160 --> 00:25:33.900
And so we'll see that in just a minute.

00:25:34.520 --> 00:25:37.060
So with change log, you can click the refresh.

00:25:37.760 --> 00:25:41.160
Version one was committed two minutes ago by anonymous.

00:25:41.160 --> 00:25:48.040
So because that's the username that I'm logged into with registry is anonymous.

00:25:48.040 --> 00:25:50.520
And so that's the who would be checked in.

00:25:50.920 --> 00:25:59.200
Once you have, again, once you have identity and security set up, you'll see the actual name of the person, however that's set up, you know, here.

00:26:00.220 --> 00:26:03.020
You also should be able to notice that we have an action.

00:26:03.880 --> 00:26:07.900
So we can import a new version of this flow.

00:26:07.900 --> 00:26:14.720
So if we have a updated JSON version of this flow, we can import that.

00:26:14.920 --> 00:26:19.140
So instead of checking it in through NIFI, we can just import the flow.

00:26:19.460 --> 00:26:26.960
So somebody could have sent me the flow and, you know, I updated it because they built it on another system.

00:26:27.680 --> 00:26:34.760
Or you may want to go ahead and instead of having templates in your NIFI instance,

00:26:34.760 --> 00:26:42.380
you have some flows that act as templates that you can just upload from other sources.

00:26:42.440 --> 00:26:47.320
So that's why we do upload. We have export version.

00:26:47.900 --> 00:26:52.860
You know, you can click export, check the latest version and click export.

00:26:52.940 --> 00:26:57.100
And you're going to get a JSON representation of this flow.

00:26:57.100 --> 00:27:07.360
So it's basically the same document that, you know, I sent everyone where you were creating a processor group and you imported that JSON flow.

00:27:07.780 --> 00:27:13.880
This is how you could import that into another system that's not connected to this registry, for instance.

00:27:15.360 --> 00:27:23.140
We also can delete the flow. And if we were to do that, NIFI would recognize that and let us know as well.

00:27:23.840 --> 00:27:28.220
All right. So what I want to do is go back to NIFI.

00:27:28.240 --> 00:27:30.600
I want to go into my checked in flow.

00:27:32.220 --> 00:27:33.600
And I'm going to make some changes.

00:27:35.460 --> 00:27:39.440
So, for instance, I'm going to copy this group.

00:27:41.460 --> 00:27:45.680
This label and put it.

00:27:48.440 --> 00:27:50.220
Always bring the front.

00:27:50.500 --> 00:27:52.540
Me, I'm going to bring this one to the front.

00:27:55.880 --> 00:27:57.880
All right. So I've made some changes.

00:27:58.160 --> 00:28:03.360
I might, you know, change even the position of the processors.

00:28:04.060 --> 00:28:10.080
And then, you know, I'm going to add just a processor to the canvas.

00:28:10.960 --> 00:28:18.960
So if I do that, you'll notice even on the bread crumb trail on the bottom left, there is now an asterisk.

00:28:19.140 --> 00:28:23.780
And so NIFI is letting you know that this flow was changed.

00:28:24.640 --> 00:28:26.400
So you need to check it in.

00:28:26.800 --> 00:28:28.080
Right. Like, you know, the flows change.

00:28:28.660 --> 00:28:31.180
You need to basically click save.

00:28:31.180 --> 00:28:36.580
So I'm back at my main canvas.

00:28:37.260 --> 00:28:41.180
And when I'm looking at the main canvas, I have my first sample flow.

00:28:41.520 --> 00:28:45.380
And instead of a little green check box, I've got an asterisk.

00:28:45.760 --> 00:28:54.200
So tracking to, you know, the first sample flow version one, you know, level changes have been made.

00:28:54.200 --> 00:29:02.140
So that tells you which flow in the bucket as well as the bucket name has been changed.

00:29:02.160 --> 00:29:03.800
So you can come back later.

00:29:04.020 --> 00:29:13.540
And if somebody else changed something, you can see that or you may have changed something and then forgot to commit it.

00:29:13.540 --> 00:29:17.520
And when you run it elsewhere, you know, it may be confusing.

00:29:17.700 --> 00:29:21.360
Wow. So what we like to do is check that back in.

00:29:21.360 --> 00:29:26.560
So you can just right click version and now you have multiple options.

00:29:27.020 --> 00:29:28.660
You can commit local changes.

00:29:29.180 --> 00:29:36.760
You can show local changes or revert all the changes you made and keep the one in source code.

00:29:37.560 --> 00:29:42.060
You can also just stop using version control on this process group.

00:29:42.700 --> 00:29:49.120
The reason that's there is you may, I know of the instance where people will connect into the registry,

00:29:49.120 --> 00:29:55.160
check out the flow and then stop versioning control, work on that flow,

00:29:55.340 --> 00:30:01.460
and then start versioning control later on a new branch because maybe they did like we did.

00:30:01.560 --> 00:30:07.320
And we kind of took some of the scenario, you know, for the controller service.

00:30:07.720 --> 00:30:13.320
And we, you know, we used a lot of those components in the second scenario we worked on.

00:30:13.700 --> 00:30:16.660
So, you know, that's a use case for that.

00:30:18.000 --> 00:30:21.800
If you make, you know, maybe you're working in a high latency environment,

00:30:22.060 --> 00:30:23.860
you may accidentally made some changes.

00:30:23.980 --> 00:30:27.640
You don't really know why you can revert those changes, right?

00:30:27.820 --> 00:30:29.420
Or just show the local changes.

00:30:29.800 --> 00:30:32.300
So what I like to do is just commit local changes.

00:30:32.880 --> 00:30:35.860
Again, we've got to do some sort of versioning comment.

00:30:36.860 --> 00:30:43.440
This is a comment of why, you know, we've done this.

00:30:43.480 --> 00:30:45.960
And now we've got our green checkbox.

00:30:47.460 --> 00:30:53.460
So if I go back to registry and I hit refresh on my changelog,

00:30:53.840 --> 00:31:01.700
I can see that version two has been created a few seconds ago in the comment about version two.

00:31:01.700 --> 00:31:08.100
So I can go through this changelog and see what has changed or what's changed

00:31:08.100 --> 00:31:11.220
and who changed it and those types of things.

00:31:12.020 --> 00:31:18.880
I could also, you know, this thing here, let's create a,

00:31:19.000 --> 00:31:21.060
what I'm going to do is actually create a new bucket.

00:31:21.780 --> 00:31:27.680
So if you can go to the top right again, we're going to go and, you know, create a new bucket.

00:31:27.680 --> 00:31:35.120
Instead of a new bucket, I'm going to put bucket two, bucket two.

00:31:36.220 --> 00:31:37.880
And I'm going to say create.

00:31:39.200 --> 00:31:39.620
All right.

00:31:39.780 --> 00:31:51.460
So you should now have two buckets in your registry and one flow with two different versions.

00:31:51.460 --> 00:31:59.000
And so what I like to do next is go back to your 9.5 canvas and select one of those other process groups.

00:31:59.760 --> 00:32:06.260
So, you know, I'm going to use the CSV JSON that we were working on and I'll say start version control.

00:32:06.900 --> 00:32:12.400
But what I want to make sure is I'm not putting it in my new bucket that I originally created.

00:32:12.600 --> 00:32:14.580
I'm putting it in the second bucket.

00:32:23.280 --> 00:32:25.580
And then save.

00:32:26.420 --> 00:32:27.300
Awesome.

00:32:27.420 --> 00:32:37.060
So now if you go into registry and go back to the 9.5 registry explorer, I'm just hitting refresh.

00:32:37.360 --> 00:32:39.600
You should see two buckets.

00:32:39.600 --> 00:32:45.100
In those buckets, you should have one flow each.

00:32:47.040 --> 00:32:50.080
You can you can store all your flows in one bucket.

00:32:51.140 --> 00:32:53.780
But, you know, I'd like to keep these separate.

00:32:54.180 --> 00:32:57.580
It's totally different, you know, scenarios, those types of things.

00:32:58.380 --> 00:33:01.220
So for this use case, I like to keep everything in its own bucket.

00:33:01.300 --> 00:33:07.580
But if you have a lot of related flows, you may put them all in one bucket and call it a day.

00:33:08.380 --> 00:33:13.760
So if you refresh registry, you should notice two different buckets.

00:33:14.000 --> 00:33:18.340
So I'm going to pause there and check in.

00:33:19.300 --> 00:33:21.240
How's it going? Peter, did you get it figured out?

00:33:21.700 --> 00:33:23.060
Let's look and see if Peter.

00:33:25.000 --> 00:33:26.340
That was the second one.

00:33:27.500 --> 00:33:31.680
I forgot how to change the URL for it.

00:33:32.820 --> 00:33:33.500
Okay.

00:33:34.020 --> 00:33:36.040
So you've got two buckets.

00:33:37.200 --> 00:33:39.020
You don't need to worry about URL.

00:33:40.420 --> 00:33:40.940
Okay.

00:33:41.340 --> 00:33:41.700
Yeah.

00:33:41.780 --> 00:33:50.220
So let's go back to your 9.5 instance and you have your version star version control.

00:33:50.680 --> 00:33:55.100
The URL went into 9.5 and needed to know which registry to go to.

00:33:56.020 --> 00:34:01.280
But because you've already set that in its controller service, you can set it and forget it.

00:34:02.500 --> 00:34:04.820
That was some info, Marshall.

00:34:07.940 --> 00:34:08.140
Yep.

00:34:08.140 --> 00:34:10.060
And then just name your flow.

00:34:10.980 --> 00:34:12.080
Give it a description.

00:34:15.600 --> 00:34:16.400
There you go.

00:34:20.520 --> 00:34:21.260
All right.

00:34:22.140 --> 00:34:23.580
You should have a checkbox.

00:34:23.720 --> 00:34:24.000
Perfect.

00:34:24.000 --> 00:34:31.100
So now you have, you know, two different buckets, each with its own flow.

00:34:31.400 --> 00:34:38.320
If you wanted to, you could check the CSV to JSON in the analyze weather data again as well.

00:34:38.440 --> 00:34:43.020
And you can put them in their own bucket or you can put them in your original bucket.

00:34:43.140 --> 00:34:43.720
It's up to you.

00:34:44.440 --> 00:34:47.920
But you look like you're good to go.

00:34:47.920 --> 00:34:49.160
Let's see.

00:34:49.320 --> 00:34:51.840
It looks like he's got it.

00:34:53.220 --> 00:34:53.740
Okay.

00:34:54.580 --> 00:35:05.200
Did anyone have any issues with registry, you know, setting it up or not being able to check their code in?

00:35:05.740 --> 00:35:07.260
Any issues like that?

00:35:08.360 --> 00:35:09.000
Perfect.

00:35:09.180 --> 00:35:09.560
Perfect.

00:35:09.660 --> 00:35:09.840
Yeah.

00:35:09.900 --> 00:35:11.580
It seemed like that was pretty straightforward.

00:35:11.840 --> 00:35:14.640
It seemed like everyone got it.

00:35:14.640 --> 00:35:17.820
There was only a couple of config questions.

00:35:18.640 --> 00:35:20.080
So, you know, nothing there.

00:35:20.740 --> 00:35:23.600
So I think we're good to go with registry.

00:35:24.060 --> 00:35:37.500
Again, like it's not something that is just massive to talk about because it's a pretty simple sub project to notify.

00:35:37.500 --> 00:35:49.240
Now, when your sys admins and your CSV folks or maybe even your DevSecOps folks work on getting this in,

00:35:49.820 --> 00:35:56.040
they are going to use probably a versioning control system like Azure.

00:35:56.320 --> 00:36:03.440
I know you guys use on-prem Azure DevOps, you know, and it also has a code repository, I think.

00:36:03.440 --> 00:36:17.720
So, you know, so when they get that configured, you know, you'll actually when you check things in, it'll actually be going, you know, the end is a regular versioning control system.

00:36:18.520 --> 00:36:26.780
And that's, you know, like I said, you may have a need for stateless NAFA where it's basically a microservice.

00:36:26.780 --> 00:36:31.760
It's just the NAFA engine and you tell it, OK, NAFA engine, run this flow.

00:36:32.020 --> 00:36:33.240
And that's all it does.

00:36:34.260 --> 00:36:36.620
So, you know, you may have that use case.

00:36:36.920 --> 00:36:45.720
You may have Minify, which actually I know you all will use Minify because the last class is heavily interested in it.

00:36:46.640 --> 00:36:53.100
Minify, if you have never heard of it, it's all it is, is it comes in two flavors.

00:36:53.100 --> 00:36:56.480
There's a Java version and a C++ version.

00:36:56.880 --> 00:37:05.180
Now, the Java version of Minify is exactly almost exactly like NAFA, but without the UI.

00:37:05.700 --> 00:37:15.100
So what it can do is execute your flows and it will actually accept most of the processors that you have for NAFA.

00:37:15.900 --> 00:37:24.200
And all it does is it's, you know, more of those edge use cases or agent type use cases.

00:37:24.540 --> 00:37:30.380
I've seen Minify working on Windows laptops or security log events and stuff.

00:37:31.360 --> 00:37:42.160
You know, I now only work from the board, but I have founded a company who uses Minify for F35.

00:37:42.160 --> 00:37:47.160
You know, doing FOD detection for F35s.

00:37:48.520 --> 00:37:53.120
So, you know, when I built that product, I used Minify.

00:37:53.760 --> 00:38:00.000
And so, you know, Minify is an edge case for the most part.

00:38:00.640 --> 00:38:06.020
And so Minify will look at registry and say, OK, you want me to run.

00:38:06.280 --> 00:38:10.940
I'm just running the NAFA headless and here's the flow I'm going to run.

00:38:10.940 --> 00:38:15.620
And, you know, just run it from the edge where it takes the less resources.

00:38:16.220 --> 00:38:20.060
And then also the other version of Minify is Minify C++.

00:38:20.740 --> 00:38:33.360
It only has like 10 or 15 processors, but it also can pull the data flow you want it to run from registry and run it on the edge.

00:38:33.360 --> 00:38:39.540
So, you know, as you can imagine, Minify is not only building your data flows that you will run,

00:38:40.080 --> 00:38:52.600
but Minify is also used to build the flows that some of the edge cases and some of the headless engine only use cases run these flows.

00:38:53.340 --> 00:38:55.100
So, you know, Minify controls that.

00:38:55.100 --> 00:39:08.860
So because it is, you know, the centralized UI for all of these, you know, services and actions, you know, it utilizes registry for, you know, all of the versions.

00:39:10.500 --> 00:39:12.800
So that is registry.

00:39:13.280 --> 00:39:14.620
There's not a whole lot to it.

00:39:14.620 --> 00:39:19.480
Anyone have any questions about registry, you know, in itself?

00:39:20.100 --> 00:39:21.060
All right.

00:39:22.400 --> 00:39:24.080
I didn't think there would be many.

00:39:25.200 --> 00:39:27.040
So that's a good thing.

00:39:27.540 --> 00:39:32.240
What we're going to do is now kind of go into some PowerPoint.

00:39:33.700 --> 00:39:35.820
I'm going to try to get through a couple of slides.

00:39:36.260 --> 00:39:39.920
We're going to talk about some multi-tenancy and things like that.

00:39:40.360 --> 00:39:45.560
There's not, you know, there's not a whole lot of Minify interaction right this minute.

00:39:45.560 --> 00:39:53.380
So if you can just bring up my shared screen, we'll go through some of these PowerPoint slides as quickly as possible.

00:39:53.840 --> 00:39:55.500
We'll take a break here soon.

00:39:55.600 --> 00:40:09.860
Our last break of our class and then get back and, you know, go over, you know, if you want to work on another scenario, survey, any administrative stuff, things like that.

00:40:09.860 --> 00:40:12.460
So, excuse me.

00:40:12.660 --> 00:40:13.120
All right.

00:40:13.160 --> 00:40:14.800
Where is my slides?

00:40:18.660 --> 00:40:19.620
All right.

00:40:19.620 --> 00:40:29.800
I think where I left off mid-Monday was actually installing NIFA.

00:40:29.800 --> 00:40:38.060
But, so, again, hate to bore everyone with PowerPoint.

00:40:39.240 --> 00:40:42.980
But I want to kind of go into some of these key concepts.

00:40:43.140 --> 00:40:48.620
You may not be the person that is actually setting this up.

00:40:48.940 --> 00:40:58.040
But having an understanding of why, you know, why these things operate like they do, you know, will, I think, be beneficial.

00:40:58.040 --> 00:41:01.400
So I like to just spell it out.

00:41:01.400 --> 00:41:04.180
I don't like to just sit here and read words off of a slide.

00:41:04.380 --> 00:41:05.740
You know, sometimes I will.

00:41:06.320 --> 00:41:09.800
But I want to, you know, just abbreviate and highlight some key aspects.

00:41:10.880 --> 00:41:23.480
But, you know, multi-tendency is efficient resource utilization, first and foremost, you know, with the baked-in security.

00:41:23.480 --> 00:41:53.460
You know, so depending on how you all set this NIFA instance up, you know, you're going to, you know, you're going to work on the same NIFA instances as potentially other organizations and other units and those types of things where traditionally, right, usually that, you know, sometimes those resources are all within the same unit or all within the same organization.

00:41:53.480 --> 00:41:59.040
So NIFA is set up for that multi-tendency use case.

00:41:59.720 --> 00:42:16.480
And so it allows different teams, different users to share the NIFA, you know, depending on, you know, the collaboration and the sharing, you may share your flows with other organizations that's also using that NIFA.

00:42:16.640 --> 00:42:23.760
And allowing them to have access to your bucket, for instance, to check out your data flows.

00:42:24.300 --> 00:42:40.280
You know, you may give read permission to your process, you know, your whole process group so someone else can check out your flow and see a little bit how you built it, but they can't turn it off.

00:42:40.280 --> 00:42:42.080
They can't interact with it.

00:42:42.140 --> 00:42:45.280
They can't clear any states or anything else like that.

00:42:45.280 --> 00:42:55.340
And so, you know, it adds to that, like, enhanced security and isolation requirement that's part of multi-tendency.

00:42:55.560 --> 00:43:05.580
It's cost effective, you know, because you're sharing the resources, you're having to spend a lot less on the resource to run NIFA and others.

00:43:06.340 --> 00:43:09.280
So, you know, it does have some cost savings built in.

00:43:09.280 --> 00:43:18.820
You know, you administer one NIFA instance, not 100 per 100 different organizations.

00:43:19.280 --> 00:43:21.960
So, you know, it just keeps it a lot simpler.

00:43:24.120 --> 00:43:29.300
I kind of go into the importance of scalability and those things.

00:43:29.700 --> 00:43:38.440
Again, I think everyone kind of gets it that, you know, NIFA was built, you know, for scalability.

00:43:38.440 --> 00:43:41.200
I mean, hundreds and thousands of nodes.

00:43:41.620 --> 00:43:50.480
So, with that, we had to build in, you know, as part of this multi-tendency, the scalability aspect of NIFA.

00:43:51.020 --> 00:44:01.640
So, you know, that way, you know, as we ingest more data flows or as you ingest more data flows, you got more data coming in,

00:44:01.640 --> 00:44:10.340
you're able to grow to add more NIFA instances, but you're all still sharing that same resource.

00:44:11.520 --> 00:44:19.320
You know, because you have that security set up, you have some of the underlying architecture built to do those things.

00:44:19.680 --> 00:44:29.760
You know, you just keep adding resources as your data needs go and therefore, you know, saving time and money and energy to manage all that.

00:44:29.760 --> 00:44:34.460
So, you know, the scalability factor is very important.

00:44:35.780 --> 00:44:36.760
I have an image here.

00:44:37.700 --> 00:44:46.000
This was actually pulled from Azure that because Azure is setting a lot of these up,

00:44:46.280 --> 00:44:53.180
mentioned on the first day that if you were trying to set up the security and some of these things, it's all command line.

00:44:53.540 --> 00:44:55.300
It's all configuration files.

00:44:55.360 --> 00:44:56.940
There's no GUI.

00:44:57.460 --> 00:45:05.540
You know, there's some automation now, and there's quite a bit of automation, but, you know, you're still working on the command line.

00:45:07.140 --> 00:45:11.440
So, you know, Azure is working to make it better, making it where it's part of a service,

00:45:11.480 --> 00:45:22.360
and that way, you know, it will tie into the rest of the services as well as, you know, your Active Directory and plugging into those groups and those types of things.

00:45:22.360 --> 00:45:31.480
So, you know, I like to call that image out because, you know, it's not necessarily very public information that Microsoft is doing this with NYPAI,

00:45:32.340 --> 00:45:39.260
but, you know, they're a big user of it and, you know, working to make it a service.

00:45:39.680 --> 00:45:48.580
I think I kind of went into what multi-tenancy is, but, you know, multi-tenancy is an architecture in which a single instance of software serves multiple users or tenants.

00:45:49.400 --> 00:45:50.920
NYPAI is built for it.

00:45:51.120 --> 00:45:52.580
It's a data isolation.

00:45:53.360 --> 00:45:55.820
It says data is securely isolated.

00:45:56.320 --> 00:45:58.500
We can isolate data flows.

00:45:58.600 --> 00:46:04.540
We can isolate complete, like, whole processor groups, those types of things.

00:46:05.760 --> 00:46:15.320
So, you know, it does provide that isolation, that enhanced security that's part of multi-tenancy.

00:46:15.320 --> 00:46:18.480
And we talked about the scalability and flexibility.

00:46:19.840 --> 00:46:29.820
So, some of the things to keep in mind, we have talked about the provenance and data lineage, you know, for the last few days.

00:46:30.900 --> 00:46:39.720
But, you know, during a multi-tenancy environment, as you can imagine, you have multi-different organizations generating, you know, provenance data.

00:46:39.720 --> 00:46:48.420
So, NYPAI provides, though, comprehensive provenance data and data lineage capabilities that allow for detailed tracking of the data as it moves the system.

00:46:48.980 --> 00:46:50.520
You know, that's always part.

00:46:50.900 --> 00:46:55.700
So, that's also included as part of that multi-tenancy.

00:46:56.140 --> 00:47:05.480
So, you know, that fine-grained detail, that chain of custody is still present even in a multi-tenancy environment.

00:47:05.480 --> 00:47:20.060
So, you know, if that tells you that, you know, a single person, though, that had access to all of that data could potentially see all the organizations and everything else.

00:47:20.740 --> 00:47:31.000
So, you know, just keep that in mind as you offload your provenance data into your corporate provenance data governance solution, if you have such a thing.

00:47:31.000 --> 00:47:37.480
You know, the administrators of that could potentially have access to a lot of data provenance.

00:47:37.540 --> 00:47:41.680
But even some of those systems, you can, is multi-tenancy as well.

00:47:42.080 --> 00:47:52.040
And so, you know, it could be only certain groups have access to certain groups of data as well, depending on the corporate policy.

00:47:52.040 --> 00:48:01.700
So, multi-tenancy, you know, process groups and now finally have been organizing data flows and those types of things.

00:48:02.440 --> 00:48:09.720
But each process group can configure with specific resources and string that no single tenant can monopolize shared resources.

00:48:10.600 --> 00:48:16.960
This is kind of key because, you know, we're seeing this newer Kubernetes environment.

00:48:16.960 --> 00:48:19.420
I know it's been out for a while.

00:48:20.340 --> 00:48:31.360
But, you know, in Kubernetes, we'll see, you know, somebody deploy a container that uses up all the resources because proper resource allocation was never set up.

00:48:31.800 --> 00:48:38.040
You know, it's getting, Kubernetes is getting better and better with that now that, you know, some of the default values is getting better.

00:48:38.560 --> 00:48:40.240
But the same concept with NFI.

00:48:40.380 --> 00:48:45.920
We can set these process groups to only use a certain amount of resources, which is a good thing.

00:48:45.920 --> 00:48:49.920
Controller services, same thing, you know, same type of thing, right?

00:48:50.740 --> 00:48:57.920
Specific processor groups for, you know, one tenant versus another tenant and those types of things.

00:49:00.100 --> 00:49:07.680
The way that NFI's ability to manage data queues and apply back pressure prevents system overload by regulating, you know, the flow of data.

00:49:08.020 --> 00:49:10.900
These settings can be adjusted for connection within the data flow.

00:49:10.900 --> 00:49:17.880
So the data flow itself has a ton of fine-grained details.

00:49:18.380 --> 00:49:30.160
Not only, you know, setting back pressure, setting that 10,000 files can be in the queue before it starts backing up.

00:49:30.600 --> 00:49:38.680
You can change all of these things very quickly and dynamically per data flow.

00:49:38.680 --> 00:49:42.060
So, you know, you're allowing for that multi-tenancy use.

00:49:42.060 --> 00:49:48.540
So you may have one tenant that's allowed 30,000 files in the back, you know, in the queue.

00:49:48.900 --> 00:49:51.980
Where another tenant may only be allowed 10,000.

00:49:52.300 --> 00:49:54.180
So just keep that in mind.

00:49:59.320 --> 00:50:03.420
This kind of goes into the, you know, setting up the environments.

00:50:03.420 --> 00:50:15.520
So what I'd really like to point out here is it's kind of crucial to establish separate environments for development, testing, and production.

00:50:17.480 --> 00:50:30.660
If you have everyone using the same instance for dead, the same instance for test, the same instance for fraud, that is a lot of, now, because of the fine-grained details

00:50:30.660 --> 00:50:47.420
and because of the multi-tenancy, you could set up one instance and have dev, test, and prod all in that instance and locked down where, you know, nobody that's seeing dev can see test and test see prod.

00:50:47.960 --> 00:50:50.980
But that is a lot of configuration.

00:50:51.440 --> 00:50:56.520
That is a lot of management of a lot of policies.

00:50:58.520 --> 00:51:01.680
And, you know, it's going to be hard to manage those resources.

00:51:01.780 --> 00:51:10.220
So if you can set up multiple environments, even if you have to do a dev and a prod, fine, right?

00:51:10.720 --> 00:51:13.300
If you can get a test in there, that'd be even better.

00:51:14.180 --> 00:51:23.900
So, you know, for, you know, this is just not, this is not necessarily tips and tricks, but here's somebody that's architected and designed these systems.

00:51:23.900 --> 00:51:26.020
This is what you should do.

00:51:27.220 --> 00:51:35.380
Each environment can be configured as a separate process group in 9.5, has its own workflows, its own controller services, zone access.

00:51:36.880 --> 00:51:42.640
This arrangement helps maintain order and enforce security policies unique to each environment.

00:51:43.220 --> 00:51:45.180
You know, a lot of these is the same, right?

00:51:45.200 --> 00:51:49.580
We have a lot of fine-grained control within 9.5.

00:51:49.580 --> 00:52:00.220
You can lock this down, you know, for process group and each process group has its own controller service access, those types of things.

00:52:00.640 --> 00:52:03.600
You know, as well as resources, right?

00:52:03.920 --> 00:52:15.080
We've already mentioned how we can limit, you know, your queue size or limit, you know, resources like memory and CPU, you know, those types of things.

00:52:15.080 --> 00:52:23.400
You know, there's a lot of advanced configuration you can do here.

00:52:23.980 --> 00:52:30.960
And 9.5 supports the promotion of data flows from development to testing and finally to production through registry, right?

00:52:31.320 --> 00:52:34.680
And that's what I was saying is registry is there to support.

00:52:35.140 --> 00:52:41.380
Usually you have one registry and you have three different 9.5s.

00:52:41.380 --> 00:52:43.100
One for depth test and product.

00:52:43.700 --> 00:52:49.200
And so, you know, 9.5 facilitates that promotion of depth to test, test to product.

00:52:53.160 --> 00:52:57.920
So that's multi-tenancy and an explanation of multi-tenancy.

00:52:58.360 --> 00:53:06.440
If you ask me why we are not going into 9.5 right now and setting up multi-tenancy, many reasons.

00:53:06.440 --> 00:53:14.440
It would require us to probably be a different type of machine that's well more suited for this.

00:53:14.800 --> 00:53:18.440
You know, I don't want to run multiple instances of 9.5 on a Windows box.

00:53:19.600 --> 00:53:22.480
You know, so we would need a cluster of machines.

00:53:22.640 --> 00:53:24.740
We would need to set up, you know, security.

00:53:25.140 --> 00:53:34.200
We need some sort of active directory and it would take us longer than three days to set that up versus, you know, just learning 9.5.

00:53:34.200 --> 00:53:40.640
So, you know, unfortunately, I can't show you any of that in the show and how to set it up.

00:53:41.120 --> 00:53:44.460
But that is what is multi-tenancies about.

00:53:45.140 --> 00:53:55.840
There's a ton of information on the official apache.9.5.org website as well as some additional diagrams and those types of things.

00:53:58.460 --> 00:53:59.100
Scalability.

00:53:59.100 --> 00:54:05.040
So, again, 9.5 was built for scalability.

00:54:06.120 --> 00:54:10.220
You know, at Fort Meade, we were ingesting a bunch of data.

00:54:10.560 --> 00:54:16.540
If you're familiar with that organization, you know we love data and we love to hang on to data.

00:54:17.560 --> 00:54:23.800
So, you know, we have data coming from all different sources, all kinds of places.

00:54:23.800 --> 00:54:35.920
And so, you know, it was nothing for us to have, you know, four or five racks and two racks is developed to, you know, basically for 9.5.

00:54:36.240 --> 00:54:39.860
And, you know, the remaining racks are just storage drives.

00:54:40.360 --> 00:54:45.180
And we'll run like a small cluster just so we can get data off the system.

00:54:45.980 --> 00:54:47.540
You know, so things like that.

00:54:48.040 --> 00:54:50.660
So, you know, 9.5 was built to scale.

00:54:50.660 --> 00:54:54.740
Going from one to two to three is the hardest.

00:54:55.220 --> 00:54:57.960
I think it's like, you know, what they say if you have a child, right?

00:54:58.040 --> 00:54:59.480
Going from one to two is the hardest.

00:54:59.860 --> 00:55:03.360
But once you go from two to three, like, it's all easy.

00:55:03.820 --> 00:55:06.440
And then, you know, you just keep adding to it.

00:55:08.820 --> 00:55:10.700
So, 9.5 is extremely scalable.

00:55:11.660 --> 00:55:15.160
As your demand increases, so can you increase those resources.

00:55:15.780 --> 00:55:17.380
It's both horizontal and vertical.

00:55:17.660 --> 00:55:19.340
I think you've already talked about some of this.

00:55:19.340 --> 00:55:21.080
You can scale out.

00:55:21.080 --> 00:55:22.620
You can scale up.

00:55:22.980 --> 00:55:27.060
You can add more CPU memory or add just more servers.

00:55:27.860 --> 00:55:36.420
Also, I think we ran into this a few times where we could work with the data flow as data was moving.

00:55:37.040 --> 00:55:38.780
We may change things around.

00:55:38.880 --> 00:55:40.460
We may pause the data.

00:55:40.740 --> 00:55:48.680
But it's not pausing the, you know, picking up the files, that initial processing of files, you know,

00:55:48.680 --> 00:55:56.120
and depending on the use case, right, we could, you know, just throw another fork in the data flow,

00:55:56.600 --> 00:55:59.700
take the original and do some additional processing.

00:56:00.900 --> 00:56:06.980
You know, so without ever having to turn off or anything else, same type of thing.

00:56:07.160 --> 00:56:08.480
You know, some of that vertical scaling.

00:56:08.620 --> 00:56:15.700
If you can add more resources, like CPU memory, you can just keep taking advantage of it.

00:56:16.260 --> 00:56:23.400
Usually what we see, though, is just draw more servers or, you know, like in the Kubernetes environment,

00:56:23.660 --> 00:56:29.200
draw more resources and ultimately more servers to run in Kubernetes.

00:56:30.200 --> 00:56:32.820
So, you know, usually that's what we see.

00:56:33.920 --> 00:56:35.820
You know, I don't really have to go into it.

00:56:35.920 --> 00:56:43.440
All important it is is, you know, scalability is crucial, especially some of the data intensive organizations out there.

00:56:48.520 --> 00:56:56.440
So, if you look at the first block here, that's actually a Raspberry Pi.

00:56:58.580 --> 00:57:07.660
Now, if I can run on a Raspberry Pi without one gig of RAM, you know, just fine.

00:57:08.020 --> 00:57:11.520
I mean, you're not going to be unzipping a lot of files.

00:57:11.520 --> 00:57:14.560
You're not going to be doing some of this data intensive stuff.

00:57:14.980 --> 00:57:23.960
But if you were to take NIFI onto your Raspberry desktop, you could download it, install it, and run it just fine.

00:57:24.740 --> 00:57:31.340
You know, so if you can imagine if you had a Raspberry Pi, you could actually do Minify or even better,

00:57:31.500 --> 00:57:36.320
Minify C++, which is the C++ version of Minify.

00:57:37.320 --> 00:57:43.280
You know, you can easily run those as well and process data for people.

00:57:43.780 --> 00:57:48.060
So, you know, as a single instance, you're a pretty square place.

00:57:49.560 --> 00:57:52.720
I got poor data quality warning for teams.

00:57:53.640 --> 00:58:03.020
So anyways, but as you start moving up and you're trying to process, you know, millions of events per second,

00:58:03.020 --> 00:58:09.120
millions of messages per second, 100 meg of throughput per second,

00:58:09.380 --> 00:58:12.980
you need to start scaling out your NIFI instances.

00:58:14.220 --> 00:58:18.920
You know, so, you know, this is a basic provisioning chart.

00:58:19.020 --> 00:58:27.220
If you are doing, I think it was like a million messages, you need, you know, you're going to need a few cores,

00:58:27.220 --> 00:58:40.080
8 gig of RAM, you know, definitely some hard drive space because it's going to start making those content repositories fill up,

00:58:40.420 --> 00:58:43.100
those provenance repositories, those types of things.

00:58:44.460 --> 00:58:52.340
And, you know, depending on how much data you come in, you may have to use different storage types.

00:58:52.340 --> 00:59:00.020
And we get into that into the large, but a medium sized cluster, you know, it's a dual core.

00:59:00.280 --> 00:59:05.700
NIFI is pretty good at using all the cores because it is written in Java.

00:59:06.720 --> 00:59:18.760
I do prefer to throw, like, if you're doing this on bare metal, I like to have NIFI run on the, you know, as many cores as possible.

00:59:18.760 --> 00:59:23.780
But I prefer faster cores than additional cores.

00:59:24.060 --> 00:59:27.100
With NIFI, I think it utilizes that core very well.

00:59:28.200 --> 00:59:34.160
You know, so these are just some of the best things as you work through setting these up, if you go down that route.

00:59:34.800 --> 00:59:42.960
You know, if you're processing video, you're processing millions of events per second, you're needing, you know,

00:59:42.960 --> 00:59:46.120
200 to 300 meg plus percent of throughput.

00:59:46.920 --> 00:59:50.640
You want full data governance, promenade, pedigree, lineage.

00:59:51.220 --> 00:59:52.760
You need everything, right?

00:59:52.820 --> 00:59:56.080
You want to start then throwing 64 gig of RAM.

00:59:57.240 --> 01:00:02.660
You know, you want to start throwing way more than four cores, as it says here.

01:00:02.920 --> 01:00:06.280
You want to start putting, like, eight to 12 cores to this.

01:00:07.120 --> 01:00:11.400
You know, you want it to be on a couple of different network adapters.

01:00:11.400 --> 01:00:19.720
And then you're, you know, you can run your operating system on a slower drive, but you want to make sure that that product repository

01:00:19.720 --> 01:00:24.380
and that container repository is running on something extremely fast.

01:00:24.860 --> 01:00:28.060
That way you can keep up writing all those events.

01:00:28.740 --> 01:00:32.840
I'm not going to go into these too much.

01:00:33.040 --> 01:00:35.180
I just kind of want to go over it.

01:00:35.600 --> 01:00:40.160
But, you know, NIFI does, you know, this is the example of the registry,

01:00:40.160 --> 01:00:42.340
where we have a NIFI dev.

01:00:42.840 --> 01:00:48.560
We have a deploy or QA test and props.

01:00:49.120 --> 01:00:52.880
And so, you know, on the dev, you're doing the commits.

01:00:53.460 --> 01:00:55.040
You're sending that to registry.

01:00:56.020 --> 01:00:59.400
Registry's got its API that's connecting to it.

01:01:00.220 --> 01:01:06.560
You know, you're then pulling that flow, utilizing Ansible, utilizing whatever,

01:01:06.560 --> 01:01:11.560
to pull that flow into your test and execute it.

01:01:12.780 --> 01:01:16.100
And the same type of thing with prod, you know, that becomes your prod.

01:01:16.560 --> 01:01:17.720
You've tested it out.

01:01:17.900 --> 01:01:24.780
You can then pull your prod ready to flow and execute those.

01:01:26.020 --> 01:01:30.300
Clustering allows NIFI nodes to operate together as a single unit.

01:01:31.300 --> 01:01:37.800
If we were in a clustered environment, it would show up on the toolbar of NIFI.

01:01:37.980 --> 01:01:41.060
It will let you know how many nodes you have available.

01:01:43.240 --> 01:01:50.180
There is a cluster coordinator in NIFI that's responsible for managing the state

01:01:50.180 --> 01:01:52.560
and the status of all the nodes.

01:01:53.860 --> 01:01:57.360
You know, the primary node, which also could be the cluster coordinator,

01:01:57.360 --> 01:02:01.740
for specific roles that are critical to the operation of the cluster,

01:02:01.860 --> 01:02:07.640
such as running controller services that may not be applicable on other nodes.

01:02:08.500 --> 01:02:14.380
You know, you may, for security reasons, if there was a CISO on the line,

01:02:15.160 --> 01:02:22.120
you may have certain servers or services that can, you know,

01:02:22.240 --> 01:02:26.760
reach out and touch, you know, like certain databases and things like that.

01:02:26.760 --> 01:02:32.380
And so, you know, you will set a controller service up for that so others could access it.

01:02:32.800 --> 01:02:40.520
But, you know, the server that is running NIFI, you know,

01:02:40.520 --> 01:02:46.300
it may not have access, you know, to all of those, you know, services.

01:02:46.480 --> 01:02:50.540
So, you know, it performs more localized controller service.

01:02:50.540 --> 01:02:59.580
So, all of those that can't be run, you know, sorry,

01:02:59.800 --> 01:03:06.400
the controller coordinator is going to run all of those tasks

01:03:06.400 --> 01:03:12.480
and all of those, you know, services that the other, you know,

01:03:12.560 --> 01:03:15.280
it's going to coordinate and run all of those.

01:03:15.280 --> 01:03:20.400
You may have an instance though that can communicate with a service

01:03:20.400 --> 01:03:24.740
that that service has to run on.

01:03:24.860 --> 01:03:27.540
That controller service has to be on that one instead.

01:03:27.920 --> 01:03:29.280
So, just keep that in mind.

01:03:31.880 --> 01:03:34.140
Data management, flow management, you know,

01:03:34.280 --> 01:03:37.520
NIFI clusters manage data flow dynamically across nodes.

01:03:38.280 --> 01:03:41.280
The system uses algorithms to distribute data evenly.

01:03:41.900 --> 01:03:44.920
Here's a little secret a lot of people don't know.

01:03:44.920 --> 01:03:51.400
Is there is a predictive analytics framework running underneath NIFI

01:03:51.400 --> 01:03:53.180
if you enable it.

01:03:53.660 --> 01:03:58.780
So, what that would do, you can actually take advantage of that framework

01:03:58.780 --> 01:04:04.700
many ways, but NIFI will use it to handle data flow,

01:04:04.960 --> 01:04:08.780
back pressure, those types of things a lot better than it does

01:04:08.780 --> 01:04:09.640
out of the box.

01:04:10.540 --> 01:04:14.200
It's got some special built algorithms, especially for this.

01:04:15.740 --> 01:04:19.200
But you don't get to download, install NIFI and use it.

01:04:20.200 --> 01:04:28.560
You got to enable it and I think you still have to build from source

01:04:28.560 --> 01:04:33.200
with it enabled to take advantage of the analytic framework, I think.

01:04:33.940 --> 01:04:36.000
There may be a property where you can turn it on,

01:04:37.180 --> 01:04:39.840
but I just bring that up because, you know,

01:04:39.920 --> 01:04:42.760
as we talk about data balancing and flow management

01:04:42.760 --> 01:04:48.000
and those types of things, you know, the clustering aspect helps there.

01:04:48.600 --> 01:04:54.180
But a component of that you can enable is analytics,

01:04:54.400 --> 01:04:56.320
a framework that NIFI uses.

01:04:56.880 --> 01:05:00.020
If you ever have interest in that or anything else,

01:05:00.180 --> 01:05:03.380
feel free to reach out and I'll put you in the right direction.

01:05:04.420 --> 01:05:07.760
NIFI also has a rules engine built in.

01:05:09.200 --> 01:05:11.760
It's J-Rules, I think.

01:05:12.660 --> 01:05:14.400
Java rules, so it's J-Rules.

01:05:15.760 --> 01:05:19.180
You have to enable that as well and build from source.

01:05:19.860 --> 01:05:23.760
But just for FYI, for those that like rules engines,

01:05:24.540 --> 01:05:29.260
you can run a rules engine as part of NIFI as well.

01:05:30.140 --> 01:05:33.980
So, you know, just some tidbits that really isn't publicly available,

01:05:33.980 --> 01:05:36.740
easily available, those types of things.

01:05:40.360 --> 01:05:45.680
We kind of went through the configuration of a connection.

01:05:46.900 --> 01:05:50.560
You know, you're able to, you know,

01:05:50.560 --> 01:05:53.980
you can actually do compression on the connection.

01:05:54.540 --> 01:05:56.760
So the data is compressed as it goes across.

01:05:57.480 --> 01:06:02.340
You can set the object threshold or the size threshold on the connections.

01:06:02.340 --> 01:06:08.900
And, you know, it's defaulting to 10,000 files or one gig,

01:06:09.120 --> 01:06:10.640
but you can change those.

01:06:10.980 --> 01:06:13.320
You can change the prioritizers.

01:06:14.320 --> 01:06:17.500
You know, you can pick up a lot of data and say,

01:06:17.620 --> 01:06:20.520
well, I don't necessarily want to go first in, first out,

01:06:20.520 --> 01:06:23.700
because I need the older data processed first.

01:06:24.220 --> 01:06:26.960
And so, you know, you're able to do all this first.

01:06:27.480 --> 01:06:29.340
So it's going to pick all this data up

01:06:29.380 --> 01:06:32.060
and then it's going to look through and say,

01:06:32.180 --> 01:06:36.200
okay, give me the oldest file first, and that's the one I want to send.

01:06:36.860 --> 01:06:38.800
So, you know, you have those types of capabilities.

01:06:40.620 --> 01:06:44.700
So as part of that load balancing, you have task distribution,

01:06:44.920 --> 01:06:47.580
node efficiency, you know,

01:06:47.660 --> 01:06:51.060
where a task can get spread out across the nodes.

01:06:51.980 --> 01:06:57.220
So they equally, you know, contribute to that data processing.

01:06:58.080 --> 01:07:00.020
If a node goes down,

01:07:00.280 --> 01:07:06.540
9.5 recognizes and redistributes the workload across the cluster.

01:07:07.060 --> 01:07:09.000
If you bring on a new node,

01:07:09.300 --> 01:07:12.840
it will, you know, increase the resources it has

01:07:12.840 --> 01:07:16.700
and start putting flows onto the new node.

01:07:16.920 --> 01:07:19.300
And we are almost done with slides.

01:07:24.420 --> 01:07:27.680
So, you know, failures is inevitable.

01:07:28.180 --> 01:07:29.480
It's going to happen.

01:07:30.500 --> 01:07:32.760
You know, you're going to have clock crashes.

01:07:33.040 --> 01:07:34.960
You're going to have, you know,

01:07:35.040 --> 01:07:38.840
if you approach designing a system with that thing, you know,

01:07:39.020 --> 01:07:43.000
with Murphy's law in mind, you know,

01:07:43.000 --> 01:07:47.380
you can build that system to try to accommodate for it.

01:07:49.300 --> 01:07:53.340
So, NAFA is designed to handle that node

01:07:53.340 --> 01:07:55.960
and network failures really gracefully.

01:07:56.520 --> 01:08:00.260
You remember the original use case of NAFA was,

01:08:00.260 --> 01:08:02.900
you know, being able to process data

01:08:02.900 --> 01:08:05.460
and then when it finally had a connection,

01:08:05.640 --> 01:08:06.880
it would send that data.

01:08:07.220 --> 01:08:10.080
I know a lot of applications that will break

01:08:10.080 --> 01:08:12.140
if it doesn't have a network connection.

01:08:12.580 --> 01:08:15.900
I know a lot of applications that wouldn't all work right

01:08:15.900 --> 01:08:20.560
if they were using, you know, a T1,

01:08:20.800 --> 01:08:22.600
you know, one of our military satellites

01:08:22.600 --> 01:08:25.600
that's got a T1 connection, you know,

01:08:25.600 --> 01:08:29.100
that's really slow or even dollop.

01:08:30.180 --> 01:08:33.760
It's funny, last year we actually did a network simulation

01:08:33.760 --> 01:08:37.100
where we simulated a dollop connection

01:08:37.100 --> 01:08:39.900
and sending data across that

01:08:40.440 --> 01:08:42.960
and making sure that it actually got there.

01:08:43.960 --> 01:08:49.840
So, you know, it's designed to handle those network failures.

01:08:52.120 --> 01:08:54.740
If something does fail, that cluster coordinator

01:08:54.740 --> 01:08:57.580
will automatically detect the failure

01:08:57.580 --> 01:09:00.620
and redistribute tasks and data flows,

01:09:01.080 --> 01:09:03.540
you know, redistribute the workflow basically.

01:09:04.700 --> 01:09:06.900
It does have automatic rebalancing,

01:09:07.740 --> 01:09:09.400
does have failover mechanisms,

01:09:09.400 --> 01:09:12.400
as well as data replication and checkpointing,

01:09:14.100 --> 01:09:17.820
you know, to safeguard against data loss.

01:09:18.380 --> 01:09:22.600
NonFi does replicate flow files across multiple nodes.

01:09:23.500 --> 01:09:25.660
So, you know, if something does fail,

01:09:26.360 --> 01:09:29.740
it can pick that back up from the content repository

01:09:29.740 --> 01:09:30.900
and keep on going.

01:09:32.560 --> 01:09:37.400
And the big one here, I don't know how you all set up

01:09:38.360 --> 01:09:41.200
your monitoring and alerts and stuff like that

01:09:41.200 --> 01:09:43.160
for your systems.

01:09:44.220 --> 01:09:45.880
Prometheus is built in.

01:09:46.160 --> 01:09:48.620
So, I know most organizations use Prometheus.

01:09:49.600 --> 01:09:50.860
So, you can actually go,

01:09:50.880 --> 01:09:53.080
there's a Prometheus controller service.

01:09:54.580 --> 01:09:56.620
So, you can go into the controller service,

01:09:56.880 --> 01:09:58.440
configure your Prometheus instance,

01:09:58.960 --> 01:10:03.800
and send all these metrics and all these alerts to Prometheus.

01:10:04.720 --> 01:10:09.840
I'm not really going to go over creating a custom processor.

01:10:10.180 --> 01:10:13.860
I don't think we all want to download IDs and write code,

01:10:14.080 --> 01:10:16.180
but especially, you know,

01:10:16.360 --> 01:10:18.320
a little over an hour left of the class.

01:10:20.640 --> 01:10:23.800
But what I did is included this in case you do.

01:10:24.780 --> 01:10:26.700
Like I said, I will, I will,

01:10:26.700 --> 01:10:28.920
I'm going to clean up a few of these slides,

01:10:29.400 --> 01:10:31.200
but I'll package it up,

01:10:31.200 --> 01:10:33.740
as well as potentially some of the scenarios,

01:10:34.340 --> 01:10:37.660
and email everyone the slides by the end of the week.

01:10:38.320 --> 01:10:41.460
That way you have them, you'll have my contact information,

01:10:41.860 --> 01:10:43.140
you know, those types of things.

01:10:44.860 --> 01:10:51.200
Now, you know, my obligation ends when class is over today.

01:10:52.220 --> 01:10:57.200
However, you guys do work for my favorite military organization,

01:10:58.200 --> 01:11:01.840
and I also like helping out on things like this.

01:11:02.160 --> 01:11:03.660
So, if you do have questions,

01:11:03.720 --> 01:11:05.200
you have my contact information,

01:11:06.900 --> 01:11:10.700
those types of things that's going to come out with the presentation,

01:11:11.240 --> 01:11:12.920
feel free to shoot me an email.

01:11:13.100 --> 01:11:16.100
If it's a quick question, have at it.

01:11:16.540 --> 01:11:19.220
If it's, hey, Josh, can you come design our system

01:11:19.220 --> 01:11:22.020
and architect and put it together?

01:11:22.520 --> 01:11:24.040
My answer is going to be yes,

01:11:24.040 --> 01:11:26.540
but I need a contract with my company to do that.

01:11:26.540 --> 01:11:32.780
But if you have a question that I can quickly answer,

01:11:32.920 --> 01:11:35.000
please don't hesitate to reach out.

01:11:35.000 --> 01:11:36.760
I love talking NaFi.

01:11:36.900 --> 01:11:38.300
It's one of my most favorite.

01:11:38.820 --> 01:11:42.160
If there's a favorite software application, it's probably it.

01:11:42.760 --> 01:11:45.440
But anyway, so I'll include all of this,

01:11:46.820 --> 01:11:49.060
and we'll, I'm losing my voice,

01:11:49.700 --> 01:11:53.440
we will kind of go through, I'll send it out.

01:11:53.560 --> 01:11:55.540
That way, if you want to create your own processor,

01:11:55.540 --> 01:11:56.860
here's the instructions.

01:11:56.960 --> 01:11:59.180
There's a lot of source code, things like that.

01:11:59.540 --> 01:12:04.100
I'm cleaning this up as well to include, you know,

01:12:04.240 --> 01:12:07.780
things like, you know, the Q&A section.

01:12:07.980 --> 01:12:11.500
I've gotten any kind of questions I've written down from you all.

01:12:11.960 --> 01:12:13.820
I try to include that as well.

01:12:14.660 --> 01:12:18.440
You know, I will include some helpful links and resources

01:12:18.440 --> 01:12:20.240
to kind of get you started.

01:12:20.240 --> 01:12:24.720
But, you know, my only advice, if you take it away,

01:12:26.280 --> 01:12:29.760
is download it locally and have fun.

01:12:31.360 --> 01:12:35.520
So that being said, I've got to get something to drink.

01:12:36.520 --> 01:12:40.240
Does anyone have any questions about multi-tenancy,

01:12:41.500 --> 01:12:47.280
registry, load balancing, scalability, NaFi in general?

01:12:47.840 --> 01:12:48.320
Okay.

01:12:48.500 --> 01:12:48.940
All right.

01:12:49.060 --> 01:12:56.740
Well, if there is no questions, let's take our last break.

01:12:56.900 --> 01:12:59.420
I'm going to, I'm going to save 15 minutes,

01:12:59.420 --> 01:13:01.620
but I'll be back before that.

01:13:02.220 --> 01:13:05.740
You know, I just kind of want to go over a couple of other things

01:13:06.600 --> 01:13:11.880
and show you where the next scenario is in case you want to work on it.

01:13:12.620 --> 01:13:15.180
You know, you should have a survey.

01:13:15.640 --> 01:13:18.620
We'll talk about and that kind of stuff.

01:13:19.580 --> 01:13:22.980
But, and then answer any final questions and get us out of here.

01:13:22.980 --> 01:13:25.380
I know we stayed over quite a bit yesterday,

01:13:26.060 --> 01:13:28.500
so I'm going to try to get us out of here a little earlier today.

01:13:29.440 --> 01:13:30.940
But quick 15-minute break,

01:13:30.980 --> 01:13:33.640
but I should be back at my desk within 10 minutes.

01:13:41.880 --> 01:13:44.980
Hopefully everyone's getting back.

01:13:46.700 --> 01:13:52.060
Let's see, we have an hour left.

01:14:20.060 --> 01:14:21.940
So I'll get everybody back.

01:14:24.280 --> 01:14:25.880
For registry, for instance,

01:14:26.400 --> 01:14:29.860
everything we went over is in the documentation.

01:14:30.300 --> 01:14:33.680
We went over downloading, installing, starting it.

01:14:34.220 --> 01:14:36.240
You can install it as a service.

01:14:36.600 --> 01:14:38.540
We talked a little bit about that with NaFi.

01:14:39.180 --> 01:14:42.220
You know, creating a bucket, connecting it and all those things.

01:14:42.780 --> 01:14:47.760
Again, I don't put the resources in the presentation I send out to everyone,

01:14:47.760 --> 01:14:53.200
but if you have any additional questions about registry,

01:14:54.460 --> 01:14:58.060
about NaFi, about MENIFI, those projects,

01:14:58.540 --> 01:15:01.420
you have a lot of documentation there.

01:15:02.160 --> 01:15:04.380
I do realize that, you know,

01:15:04.580 --> 01:15:06.940
even though I think it's pretty good documentation,

01:15:07.320 --> 01:15:11.760
it could be lacking in some areas just because it is an open source project.

01:15:12.580 --> 01:15:13.520
It's kind of general.

01:15:13.520 --> 01:15:19.660
There's no specific use cases and setup and things like that.

01:15:20.280 --> 01:15:25.960
But, you know, I'll include these in, you know, in case you all need it.

01:15:27.080 --> 01:15:31.700
One of the other little points I want to chat about is MENIFI.

01:15:32.040 --> 01:15:37.620
Only because the last class was really interested in this,

01:15:37.640 --> 01:15:39.820
we actually did some MENIFI things.

01:15:39.820 --> 01:15:43.280
But, you know, I mentioned MENIFI.

01:15:43.700 --> 01:15:47.860
It is a sub-project under NaFi.

01:15:48.420 --> 01:15:56.500
It's basically the engine and any processors you would need to run a data flow.

01:15:57.140 --> 01:15:59.080
And it's built for speed.

01:15:59.280 --> 01:16:03.460
It's built for edge cases and those types of things.

01:16:04.780 --> 01:16:06.240
There is two different versions.

01:16:06.240 --> 01:16:08.840
There's a MENIFI C++,

01:16:09.740 --> 01:16:14.780
so if we have anybody on the call that likes to tinker with Raspberry Pis

01:16:14.780 --> 01:16:16.040
and things like that,

01:16:16.760 --> 01:16:20.460
the MENIFI C++ actually has, you know,

01:16:21.000 --> 01:16:24.840
a processor to capture images from a Raspberry Pi camera,

01:16:25.920 --> 01:16:28.540
you know, read sensor data, those types of things.

01:16:29.300 --> 01:16:32.580
As you can imagine, the C++ is very small.

01:16:32.580 --> 01:16:36.580
It's extremely fast because, you know, C++ is,

01:16:37.280 --> 01:16:39.540
I would consider it more low-level code.

01:16:40.060 --> 01:16:44.740
Java still has to go through the JVM and the Java Virtual Machine.

01:16:45.200 --> 01:16:47.660
So C++ outruns Java.

01:16:49.400 --> 01:16:54.500
But the C++ version only has about 15 processors.

01:16:55.640 --> 01:17:00.400
The last I looked, and so, you know,

01:17:00.400 --> 01:17:07.160
and they're basic processors for, like, getting a file or getting an HTTP

01:17:07.160 --> 01:17:12.120
or something like that, update attribute, those types of things.

01:17:13.180 --> 01:17:19.160
If you, yeah, there's actually, if you click on processors for C++,

01:17:19.400 --> 01:17:21.020
actually it's gotten a lot better.

01:17:22.040 --> 01:17:24.980
But it's only a subset, so you can tell a file.

01:17:24.980 --> 01:17:29.760
You can do Windows syslog events and stuff like that.

01:17:30.060 --> 01:17:36.520
You can execute scripts in SQL, Python processor, those types of things.

01:17:37.140 --> 01:17:41.560
What I really like is the collect Kubernetes pod metrics and stuff like that.

01:17:42.360 --> 01:17:45.060
So for the toms of the world and others,

01:17:45.300 --> 01:17:51.440
you may want to look at C, MENIFI C++ and deploy an instance of that

01:17:51.440 --> 01:17:53.340
for some of the monitoring of your system.

01:17:53.340 --> 01:17:59.020
I know that, you know, some of the others in the organization may use it

01:17:59.020 --> 01:18:01.580
for downrange sensor collection.

01:18:01.760 --> 01:18:03.680
That's what they were looking at it for.

01:18:04.520 --> 01:18:07.440
You know, that's another great use case.

01:18:08.520 --> 01:18:11.540
And so, you know, just keep that in mind.

01:18:12.140 --> 01:18:16.600
There's a lot of documentation about it and some of those things.

01:18:17.620 --> 01:18:20.720
The one that most people use is the MENIFI Java

01:18:20.720 --> 01:18:25.480
because, you know, it does have most of the processors

01:18:25.480 --> 01:18:28.700
that you have in a MENIFI instance.

01:18:29.580 --> 01:18:34.180
It also has, you know, any kind of custom processors.

01:18:34.180 --> 01:18:35.780
You can include it.

01:18:35.920 --> 01:18:41.320
The only processors really that you really can't use

01:18:41.320 --> 01:18:45.720
is some of the specialized processors for...

01:18:45.720 --> 01:18:50.900
Like, it doesn't bundle well with some of the cloud services,

01:18:50.920 --> 01:18:54.500
those types of things, but for the most part, you have that service.

01:18:55.460 --> 01:18:59.660
The nice thing about MENIFI as well is you still get that full data governance.

01:18:59.940 --> 01:19:03.720
You still get, you know, data delivery guarantee,

01:19:04.340 --> 01:19:07.400
you know, all of these different things that MENIFI provides,

01:19:07.460 --> 01:19:09.960
you get with MENIFI as well.

01:19:10.380 --> 01:19:15.200
So, you know, when you start thinking about some of the future use cases

01:19:15.200 --> 01:19:17.280
for future scenarios in MENIFI

01:19:18.220 --> 01:19:23.520
or hearing others in the organization talk about MENIFI being used

01:19:23.520 --> 01:19:26.320
to collect data on the edge and sort and filter

01:19:26.320 --> 01:19:30.880
and apply machine learning or AI algorithms to that,

01:19:30.960 --> 01:19:32.200
you know, you'll see why.

01:19:33.480 --> 01:19:37.340
But, yeah, I want to make sure I touched on MENIFI.

01:19:37.520 --> 01:19:38.640
A couple of other things.

01:19:39.500 --> 01:19:45.560
I put another scenario in your uploads.

01:19:45.680 --> 01:19:51.680
So, you should go to Uploads, and there should be a scenario two.

01:19:52.960 --> 01:19:55.640
I don't think we're going to get time to do it today,

01:19:56.340 --> 01:20:01.540
but I will send it out as well if you want to try to do this one.

01:20:03.240 --> 01:20:06.620
It's, you know, pretty...

01:20:06.620 --> 01:20:10.860
I think, like, it's not that hard.

01:20:11.320 --> 01:20:14.660
There's not a lot of controller services, things like that.

01:20:15.360 --> 01:20:19.280
So, if you want to do this scenario, have at it,

01:20:19.700 --> 01:20:23.780
your machines will be around for the next couple of days.

01:20:24.860 --> 01:20:30.020
And if you are working on this scenario and you get hung up,

01:20:30.100 --> 01:20:32.620
just send me an email with where you're hung up,

01:20:32.620 --> 01:20:34.800
and I can still log in and take a look.

01:20:35.440 --> 01:20:39.720
But, you know, this is just homework or extra work if you want it.

01:20:40.180 --> 01:20:45.920
So, you have, you know, you're working at a mid-size retail company,

01:20:46.120 --> 01:20:48.960
and you're going to create data flow.

01:20:49.940 --> 01:20:53.020
You know, I gave you the CSVs and stuff like that,

01:20:53.020 --> 01:20:56.220
but it's a little bit easier.

01:20:56.280 --> 01:21:01.000
You don't have to deal with, you know, different formats.

01:21:01.060 --> 01:21:03.840
You do have to deal with combining CSVs

01:21:03.840 --> 01:21:06.460
and things like that.

01:21:07.160 --> 01:21:12.460
But, you know, there is a simple reporting mechanism

01:21:12.460 --> 01:21:14.500
where you can use an execute script.

01:21:14.940 --> 01:21:17.800
You can, you know, the main thing here is try to get you

01:21:17.800 --> 01:21:21.440
more familiar with the regular expression language.

01:21:22.220 --> 01:21:24.140
So, you know, the scenario is there.

01:21:24.200 --> 01:21:25.540
It's not mandatory.

01:21:26.260 --> 01:21:30.280
But if you just want to take it a step further,

01:21:30.520 --> 01:21:31.500
you know, have at it.

01:21:31.500 --> 01:21:33.620
So, you should see that.

01:21:33.620 --> 01:21:38.460
You should see three CSV files that go along with that.

01:21:39.420 --> 01:21:43.900
And, you know, you're able to just do that on your own time.

01:21:46.820 --> 01:21:49.880
I'm going to clean all the scenarios up.

01:21:50.060 --> 01:21:58.700
I am going to also include, like, the export of my flows.

01:21:58.700 --> 01:22:03.260
So, remember the flow we did on the first one, the convert record.

01:22:04.220 --> 01:22:06.180
I'm going to include that.

01:22:06.280 --> 01:22:09.940
I'm going to try to save my second one that uses that,

01:22:09.940 --> 01:22:11.280
you know, as well.

01:22:11.320 --> 01:22:15.680
So that way, if you want, you can import my flow

01:22:16.700 --> 01:22:20.540
and go through it and reference it, you know,

01:22:20.600 --> 01:22:22.820
copy from it, you know, whatever.

01:22:24.080 --> 01:22:26.640
If it provides any use to you, please use it.

01:22:26.640 --> 01:22:30.120
If not, delete it and it will go away.

01:22:30.520 --> 01:22:33.560
So I'll only try to include that as well.

01:22:35.540 --> 01:22:36.360
Let's see here.

01:22:36.520 --> 01:22:37.140
What else?

01:22:39.680 --> 01:22:45.160
Oh, there should have been a survey sent to you all.

01:22:46.200 --> 01:22:51.160
Again, I just ask that I get paid either way,

01:22:51.360 --> 01:22:54.860
but I get paid a little quicker if the surveys are done quicker.

01:22:54.860 --> 01:23:00.520
So, you know, I ask that, you know, if you can complete the survey,

01:23:00.540 --> 01:23:07.340
you know, in a timely fashion, just helps me out a little bit

01:23:07.340 --> 01:23:10.500
and it gets it over to the company doing the training,

01:23:10.980 --> 01:23:13.140
coordinating this training, you know,

01:23:13.140 --> 01:23:16.000
to get those survey results in and those types of things.

01:23:16.940 --> 01:23:18.700
So if you can work on that.

01:23:20.300 --> 01:23:27.160
I don't think you want this option, but Maria asked me to let you all know

01:23:27.160 --> 01:23:28.880
that these machines will be available.

01:23:28.940 --> 01:23:32.340
If you want to purchase some additional time, you can.

01:23:33.180 --> 01:23:34.460
Those types of things.

01:23:35.340 --> 01:23:38.900
But, you know, you can definitely, you know,

01:23:38.980 --> 01:23:41.280
use these machines for the next day or two

01:23:41.280 --> 01:23:43.980
and play around with your data flow.

01:23:43.980 --> 01:23:49.080
If you want to, you know,

01:23:50.200 --> 01:23:53.000
you set up some data flows to go download things or whatever,

01:23:53.140 --> 01:23:56.880
but, you know, you'll have it for another day at least.

01:23:57.340 --> 01:24:00.320
You should get an email that it will be shutting down

01:24:00.320 --> 01:24:02.980
and then they'll tell you it's deleted or something.

01:24:04.700 --> 01:24:08.600
So, you know, that's there in case you want to reference any of your work.

01:24:09.740 --> 01:24:10.880
There's paste bed.

01:24:11.040 --> 01:24:13.680
There's some scratch pads and stuff like that.

01:24:13.680 --> 01:24:17.340
If you just want to copy and paste from your machine.

01:24:17.760 --> 01:24:23.760
If not, feel free to log in with like a Gmail or something

01:24:23.760 --> 01:24:26.480
and email yourself all this information.

01:24:27.320 --> 01:24:31.360
This machine will get deleted after today.

01:24:31.500 --> 01:24:35.120
I won't be in the machine unless you text me like,

01:24:35.340 --> 01:24:37.720
hey, email me that you have a question.

01:24:38.640 --> 01:24:40.680
So there's many ways to get the data off

01:24:40.880 --> 01:24:44.360
in case you wanted to capture and keep some of this.

01:24:44.800 --> 01:24:50.000
But I'm going to include not only the scenarios but my flows,

01:24:50.180 --> 01:24:55.320
also the original JSON that the first class broke apart

01:24:55.320 --> 01:24:59.100
as well as the new JSON that we worked on.

01:24:59.720 --> 01:25:01.420
So just keep that in mind.

01:25:03.200 --> 01:25:08.140
And with all of that being said, any questions?

01:25:08.140 --> 01:25:12.040
What I like to do now, you know, if there's not any other questions,

01:25:12.280 --> 01:25:15.740
is just kind of go around the room, you know,

01:25:15.860 --> 01:25:21.020
call on folks and, you know, do a little test just to make sure

01:25:21.020 --> 01:25:27.100
we all have, you know, our nine-five knowledge

01:25:27.100 --> 01:25:29.280
and things like that, you know, squared away.

01:25:29.780 --> 01:25:35.380
So before we go into that, anyone have a question that I can answer

01:25:36.480 --> 01:25:39.380
before we go around the room here?

01:25:42.760 --> 01:25:44.280
Did you ever put out your email?

01:25:44.500 --> 01:25:45.940
I don't think I've gotten your email address

01:25:45.940 --> 01:25:48.420
unless it was in some sort of email I may have missed.

01:25:48.860 --> 01:25:49.980
I did.

01:25:50.800 --> 01:25:55.080
It was actually on the first slide.

01:25:56.140 --> 01:25:57.040
All right.

01:25:58.500 --> 01:26:02.360
Like, I put it out, but you're going to get it.

01:26:02.360 --> 01:26:06.100
And that phone number is my personal cell phone

01:26:06.100 --> 01:26:09.080
that I've got in my hand right now in front of my laptop.

01:26:11.040 --> 01:26:15.000
So, and I already get like 20 phone calls a day from spam,

01:26:15.260 --> 01:26:16.940
so please don't sign me up for spam,

01:26:17.020 --> 01:26:20.280
but if you need anything, you can text or call me as well.

01:26:20.740 --> 01:26:24.840
But that's my email that I use.

01:26:26.860 --> 01:26:28.060
And you're going to get, like I said,

01:26:28.060 --> 01:26:32.520
you're going to get a copy of this as well that will have,

01:26:32.820 --> 01:26:35.820
you know, my cowboy picture here.

01:26:36.600 --> 01:26:38.320
I do live on a, I do run cattle.

01:26:38.500 --> 01:26:39.340
I have a ranch.

01:26:39.340 --> 01:26:40.380
I live here in Texas.

01:26:41.620 --> 01:26:43.140
I love Hereford's.

01:26:43.220 --> 01:26:46.740
You know, on my breaks, I run outside to check on the animals

01:26:46.740 --> 01:26:48.860
or listen to my wife yell at them.

01:26:49.840 --> 01:26:56.380
But yeah, you'll get all this information as well.

01:26:57.240 --> 01:26:58.340
Great, thank you.

01:26:58.400 --> 01:26:59.140
Yep, yep.

01:26:59.760 --> 01:27:00.580
Any other questions?

01:27:05.540 --> 01:27:06.060
Okay.

01:27:07.500 --> 01:27:10.000
Well, that being said then,

01:27:12.280 --> 01:27:18.400
so I'm going to just randomly pick on people

01:27:20.660 --> 01:27:23.680
and you know, just kind of go around the room.

01:27:23.680 --> 01:27:30.500
I have a test, you know, kind of set up where it's multiple choice,

01:27:30.580 --> 01:27:33.200
but you know, I'm not going to give you the choice

01:27:33.200 --> 01:27:36.280
unless you need some help and then I'll give you the choice.

01:27:37.600 --> 01:27:40.620
But, you know, for the first one,

01:27:40.880 --> 01:27:44.780
let's just start with the first person I have here is Ekta.

01:27:46.220 --> 01:27:46.980
Ekta.

01:27:47.680 --> 01:27:54.180
So what is Apache 9.5 primarily used for?

01:27:54.440 --> 01:27:57.100
Processing data, moving data around.

01:27:58.080 --> 01:27:59.540
Well, basically data language.

01:28:01.420 --> 01:28:04.860
Data from different types of sources, systems,

01:28:06.200 --> 01:28:10.860
and you know, in a multi-tennis environment, if there is one.

01:28:10.860 --> 01:28:15.280
Yeah, no, it's data flow automation, right?

01:28:15.880 --> 01:28:18.460
So automating those data flows,

01:28:18.680 --> 01:28:20.760
the orchestration of those data flows.

01:28:20.840 --> 01:28:22.740
So you nailed it.

01:28:23.180 --> 01:28:26.620
You know, the beauty is it's using workflow-based programming.

01:28:27.580 --> 01:28:31.540
We can build data flow and run that data flow,

01:28:31.540 --> 01:28:36.140
and now you have that automated flow, you know, going in.

01:28:36.540 --> 01:28:37.340
So great answer.

01:28:38.280 --> 01:28:45.120
Peter, can you name me a core component of 9.5?

01:28:46.880 --> 01:28:48.200
What do you mean by component?

01:28:48.980 --> 01:28:51.480
So 9.5 has many components.

01:28:52.780 --> 01:28:57.540
What would be a main component that you would use in 9.5?

01:28:57.720 --> 01:28:58.560
Like the processor.

01:28:59.600 --> 01:29:00.200
Bingo.

01:29:00.460 --> 01:29:01.220
Processor, right?

01:29:01.620 --> 01:29:03.040
Processor is a main component.

01:29:03.660 --> 01:29:05.600
A controller service is a main component.

01:29:05.600 --> 01:29:07.880
Your connection is a main component.

01:29:08.220 --> 01:29:09.820
So something like that.

01:29:09.820 --> 01:29:11.480
So you said processor.

01:29:11.480 --> 01:29:12.200
You got it.

01:29:12.200 --> 01:29:16.280
It's hard to explain the question because it's going to give you the answer.

01:29:16.840 --> 01:29:18.520
Like, oh, what do you mean component?

01:29:18.940 --> 01:29:20.140
Like, oh, processor.

01:29:23.580 --> 01:29:24.200
Okay.

01:29:24.880 --> 01:29:25.680
Oh, there it is.

01:29:25.920 --> 01:29:27.680
Or OD, I think they called you.

01:29:28.160 --> 01:29:31.280
What is a flow file in 9.5?

01:29:31.280 --> 01:29:38.760
I would say it's the file that the processor works with.

01:29:39.820 --> 01:29:43.020
It can take it in and do something with it,

01:29:43.740 --> 01:29:46.740
and then it'll usually output a flow file when it's done.

01:29:47.560 --> 01:29:48.020
Yeah.

01:29:48.280 --> 01:29:48.480
Yeah.

01:29:48.480 --> 01:29:49.400
You got it, right?

01:29:49.560 --> 01:29:53.980
You know, a flow file is a data record within 9.5.

01:29:54.480 --> 01:29:57.460
So that data record is a piece of data.

01:29:57.460 --> 01:30:02.140
So that could be a zip file, a CSV file, JSON, you name it, right?

01:30:02.140 --> 01:30:04.240
But it's a data record within 9.5.

01:30:04.940 --> 01:30:06.920
No, you got it.

01:30:08.320 --> 01:30:09.100
Let's see.

01:30:09.820 --> 01:30:17.000
Leroy, if I wanted to fetch data from an HTTP source,

01:30:18.100 --> 01:30:20.240
what processor do you think I would use?

01:30:23.780 --> 01:30:25.700
Let me look at one real quick.

01:30:25.700 --> 01:30:26.480
No.

01:30:30.400 --> 01:30:36.040
So if I had to get data from HTTP, what processor do you think?

01:30:37.320 --> 01:30:39.200
There is one called get HTTP.

01:30:39.940 --> 01:30:40.480
Nailed it.

01:30:40.480 --> 01:30:40.980
Perfect.

01:30:41.820 --> 01:30:42.820
You got it.

01:30:42.980 --> 01:30:45.760
It's really, I mean, you know, and this is,

01:30:46.680 --> 01:30:48.940
this class would take two weeks,

01:30:48.940 --> 01:30:51.680
and I would lose my voice, you know, very quickly

01:30:51.680 --> 01:30:54.100
if we got to go through every single processor.

01:30:54.940 --> 01:31:00.420
But, you know, these processors are kind of set up for self-discovery, right?

01:31:01.620 --> 01:31:04.540
You just demonstrated that where, you know,

01:31:04.540 --> 01:31:07.420
I bet there's a get HTTP, and there was.

01:31:07.880 --> 01:31:08.780
So, no, good answer.

01:31:11.060 --> 01:31:11.560
All right.

01:31:11.680 --> 01:31:16.740
Tom, what does the split text processor do in 9.5?

01:31:17.820 --> 01:31:23.400
It pulls out the, it separates the attributes into their own files.

01:31:25.040 --> 01:31:29.660
Yeah, so it splits a text file into multiple smaller files.

01:31:30.560 --> 01:31:37.640
So, not attributes, but definitely like a, you know, 100 line CSV, right?

01:31:37.840 --> 01:31:41.800
It feeds it in, it splits it out into individual smaller files,

01:31:41.860 --> 01:31:44.300
and they can be one line per file.

01:31:44.300 --> 01:31:48.380
So, but I give you a great answer on that one.

01:31:48.520 --> 01:31:49.300
I knew what you meant.

01:31:50.280 --> 01:31:50.540
Thank you.

01:31:50.720 --> 01:31:54.720
Yeah, yeah, no, we'll go through the rest of these tests hopefully pretty quickly.

01:31:58.340 --> 01:32:02.120
How is Providence data used in 9.5, Richard?

01:32:02.160 --> 01:32:03.160
You gave me the hard one.

01:32:04.660 --> 01:32:05.960
I was helping to help you.

01:32:05.960 --> 01:32:07.600
You're the CDO, right?

01:32:09.940 --> 01:32:14.980
Well, I mean, I guess you can, that's the question again.

01:32:15.160 --> 01:32:16.360
I want to make sure I understand that.

01:32:16.980 --> 01:32:20.340
How is Providence data used in 9.5?

01:32:21.600 --> 01:32:24.820
How, what is the purpose of the Providence data?

01:32:24.820 --> 01:32:26.080
Yeah, I'm struggling to answer that one.

01:32:26.080 --> 01:32:26.580
No worries.

01:32:26.700 --> 01:32:27.400
I'm going to phone a friend.

01:32:28.940 --> 01:32:31.180
Oh, well, I was going to answer it, but phone a friend.

01:32:31.480 --> 01:32:33.040
Yeah, no, actually, no, that's fine.

01:32:33.120 --> 01:32:33.640
You can answer it.

01:32:33.640 --> 01:32:34.800
Oh, you're phoning me.

01:32:34.800 --> 01:32:43.960
So the Providence data in 9.5 is used to track the data flow, track data flow and modifications to data.

01:32:44.340 --> 01:32:51.540
So if you can remember, we are keeping track of everything that touches that data.

01:32:51.900 --> 01:32:56.500
So if you're doing an extract text, you know, we're keeping track of that.

01:32:56.560 --> 01:32:58.720
We're keeping track of that state of that change.

01:32:58.940 --> 01:33:01.720
We're keeping track of the data itself and what changed.

01:33:01.720 --> 01:33:07.100
So that way we can compute that lineage and go back and replay it.

01:33:07.280 --> 01:33:16.640
And so you can actually replay a whole data flow to see how your 100-line CSV got to one line, you know, text file.

01:33:16.860 --> 01:33:22.240
So, you know, the answer is to track data flow and modifications to data.

01:33:22.760 --> 01:33:26.060
No, but you'll get the next one.

01:33:26.080 --> 01:33:29.740
I got about two or three, three questions per person.

01:33:29.740 --> 01:33:36.880
So anyways, which features in 9.5 can be used for scheduling when a processor runs?

01:33:37.920 --> 01:33:42.000
Ekta, how would you, can you show me how, you've got your screen up.

01:33:42.240 --> 01:33:45.560
Can you show me how you would schedule when a processor runs?

01:33:47.880 --> 01:33:53.540
Just for you, I guess, maybe, I don't know what's with that, do we?

01:33:53.540 --> 01:33:53.840
We did.

01:33:54.220 --> 01:33:57.100
So if you can, go into your processor group.

01:33:58.300 --> 01:34:00.000
No, it's not registry.

01:34:01.340 --> 01:34:06.680
Yeah, go into your processor group and let's bring up a processor and just go to the properties of one of those.

01:34:06.720 --> 01:34:07.320
There you go.

01:34:07.540 --> 01:34:09.480
Configure and go to scheduling.

01:34:11.640 --> 01:34:19.520
Remember, so we actually, you know, so we can change how things are scheduled here.

01:34:19.580 --> 01:34:25.320
We can do a timer and we can do, if you go down to scheduling strategy, you should have two options.

01:34:26.440 --> 01:34:27.700
There you go.

01:34:28.500 --> 01:34:31.280
Well, three actually, timer, event or chron.

01:34:31.840 --> 01:34:34.680
So an event can kick off a processor.

01:34:35.160 --> 01:34:42.840
A timer can kick off a processor or chron, meaning, you know, like, you know, at a certain time every day.

01:34:43.200 --> 01:34:50.580
So that's how you can use, you know, some of the scheduling strategy to run a processor.

01:34:50.880 --> 01:34:51.660
Just hit cancel.

01:34:52.140 --> 01:34:54.080
So that way it doesn't save it.

01:34:55.620 --> 01:34:56.220
Okay.

01:34:56.740 --> 01:34:57.280
All right.

01:34:57.320 --> 01:34:58.660
Well, thank you, Eka.

01:34:59.640 --> 01:35:00.560
Let's see.

01:35:00.600 --> 01:35:01.080
Peter.

01:35:02.060 --> 01:35:03.620
I've mentioned this a few times.

01:35:03.980 --> 01:35:05.700
What is back pressure?

01:35:07.600 --> 01:35:08.800
Back pressure.

01:35:10.180 --> 01:35:17.600
I don't remember the term, but it sounds like when the queue is getting filled up and it can't move on past a certain point.

01:35:17.600 --> 01:35:26.860
Yeah, it's a way to control the system overload by throttling the incoming data based upon what you were just talking about.

01:35:27.220 --> 01:35:35.940
So if the queue is backing up and, you know, it's configured to back up to 10,000 files, for instance, right.

01:35:36.300 --> 01:35:39.080
And we chatted about that a couple of times.

01:35:39.640 --> 01:35:43.880
Back pressure is going to slow things down.

01:35:43.880 --> 01:35:48.300
And so, you know, the data is still being ingested.

01:35:48.620 --> 01:35:54.320
The data is still running up until that point where you were queued up for 10,000 files.

01:35:54.800 --> 01:35:58.120
But because of back pressure, that flow doesn't stop.

01:35:58.540 --> 01:36:01.180
It just slows down a little bit.

01:36:02.520 --> 01:36:03.140
Move, move.

01:36:03.900 --> 01:36:07.840
Is that something that it does automatically or we're able to control?

01:36:08.220 --> 01:36:11.440
You are able to control it, but it does do it automatically.

01:36:12.400 --> 01:36:12.780
Okay.

01:36:13.300 --> 01:36:16.300
You're able to adjust settings and stuff like that for back pressure.

01:36:16.860 --> 01:36:31.220
And the config file, you know, as well as some other like some of the scheduling and first in, first out, you know, some of those things all kind of go into, you know, some of that back pressure and those types of things.

01:36:31.300 --> 01:36:37.220
But yeah, it's something that automatically happens as well as, you know, you're able to configure it a bit.

01:36:38.480 --> 01:36:38.960
Okay.

01:36:40.940 --> 01:36:43.240
Um, let's see.

01:36:44.120 --> 01:36:45.260
Oh, there it is.

01:36:45.620 --> 01:36:54.400
If a processor fails to process a flow file and needs to be retried, how would you do that?

01:36:54.480 --> 01:37:00.340
So can you actually bring up, let me bring your screen up so we can all see it.

01:37:00.640 --> 01:37:06.120
If you can just go into one of your processors, how would you do a retry?

01:37:06.120 --> 01:37:09.540
Put in the chat that he had to step away for a minute, so maybe he's not back yet.

01:37:09.540 --> 01:37:12.020
Oh, I didn't see the chat.

01:37:12.180 --> 01:37:13.080
Thank you very much.

01:37:13.160 --> 01:37:13.600
No worries.

01:37:14.380 --> 01:37:22.020
Tom, since you're here, how would you retry on a processor?

01:37:23.360 --> 01:37:29.760
So if you can, you can pull up your canvas and show me how you would do a retry on a processor.

01:37:30.820 --> 01:37:36.220
Might be better to do it on another processor that is not yet filed.

01:37:36.440 --> 01:37:41.680
I would do it on something like that has an error state.

01:37:43.280 --> 01:37:48.780
So let's look at a processor that, oh, convert CSV to JSON.

01:37:50.000 --> 01:37:51.360
How would you do a retry on that?

01:37:51.360 --> 01:38:01.380
So if you can, let's just go on that CSV to JSON, and you see the arrow in the middle?

01:38:01.380 --> 01:38:03.220
You know, the connection in the middle.

01:38:03.460 --> 01:38:07.420
You know, when you hover over, it's the little arrow that's trying to create a connection.

01:38:08.580 --> 01:38:09.680
Keep going to the right.

01:38:10.380 --> 01:38:11.540
You don't have to click.

01:38:11.620 --> 01:38:13.280
So go to the middle of the processor.

01:38:14.780 --> 01:38:16.980
You see the arrow there where it's trying to make a connection?

01:38:16.980 --> 01:38:18.980
Drag that arrow onto yourself.

01:38:19.920 --> 01:38:20.220
Bingo.

01:38:20.280 --> 01:38:20.860
Right there.

01:38:22.240 --> 01:38:23.080
You had it, but it didn't.

01:38:23.240 --> 01:38:24.160
Go back a little bit.

01:38:24.320 --> 01:38:24.980
There you go.

01:38:25.920 --> 01:38:26.340
Let go.

01:38:27.500 --> 01:38:32.980
And if you have a retry relationship, you will checkbox that.

01:38:33.920 --> 01:38:36.440
So you can actually do a success as well.

01:38:36.460 --> 01:38:40.860
You can send success back to yourself, but I would not recommend that because it'd be a loop.

01:38:41.400 --> 01:38:42.200
Then hit cancel.

01:38:42.200 --> 01:38:46.580
You can drag a connection back to yourself.

01:38:47.300 --> 01:38:55.460
And when you do that, you know, it will retry, you know, it will retry to process that data.

01:38:55.860 --> 01:38:58.540
We noticed those in a couple of processors.

01:38:58.780 --> 01:38:59.980
I forgot which process.

01:39:00.420 --> 01:39:03.060
It's only limited to a subset of processors.

01:39:03.780 --> 01:39:10.560
But I think it was one of the ones that we worked on on the previous scenario had a retry.

01:39:10.560 --> 01:39:14.840
I noticed on multiple people used it, so it had to retry.

01:39:15.200 --> 01:39:20.580
But that if you have the retry option, then I think it's unzipping.

01:39:21.140 --> 01:39:27.720
You can actually drag that arrow back to yourself and do a retry.

01:39:28.360 --> 01:39:32.160
So, you know, maybe a processor will penalize a file.

01:39:32.660 --> 01:39:35.300
You have some sort of penalty set up.

01:39:35.420 --> 01:39:39.820
And, you know, it's a time thing and you've got a lot of back pressure.

01:39:39.820 --> 01:39:41.740
You can tell it to retry, right?

01:39:41.840 --> 01:39:45.220
And then you can tell it, well, I want you to retry 10 times.

01:39:45.220 --> 01:39:46.360
And after that, fail.

01:39:47.380 --> 01:39:51.320
So, you know, you do have a retry.

01:39:52.520 --> 01:39:53.000
See?

01:39:54.300 --> 01:39:57.220
So that's how you would do a retry.

01:39:57.700 --> 01:39:58.220
So good job.

01:39:58.320 --> 01:39:59.260
Oh, gotcha.

01:39:59.400 --> 01:40:00.020
Okay, gotcha.

01:40:00.160 --> 01:40:00.540
Yeah.

01:40:00.760 --> 01:40:01.440
Yeah, you're right.

01:40:01.580 --> 01:40:04.420
It's on the Zip file processor.

01:40:04.720 --> 01:40:06.400
Yeah, not all of them have it.

01:40:06.400 --> 01:40:09.560
But yeah, you can drag it to yourself and retry it.

01:40:10.000 --> 01:40:10.860
So good job.

01:40:11.620 --> 01:40:12.460
All right.

01:40:12.460 --> 01:40:13.120
Let's see.

01:40:13.120 --> 01:40:15.360
Who else do we have here?

01:40:17.700 --> 01:40:18.660
Odair stepped away.

01:40:18.860 --> 01:40:21.060
So I skipped Leroy.

01:40:22.340 --> 01:40:24.460
Leroy, I'll throw you a softball.

01:40:25.280 --> 01:40:29.620
NAFA supports data ingestion and data extraction.

01:40:30.240 --> 01:40:31.140
True or false?

01:40:32.320 --> 01:40:32.820
Bingo.

01:40:33.640 --> 01:40:36.320
I'm just reading off my pre-built test.

01:40:38.080 --> 01:40:39.160
All right.

01:40:39.420 --> 01:40:40.860
Tom, I've got you.

01:40:41.120 --> 01:40:43.180
Richard, I'll throw you a softball.

01:40:47.740 --> 01:40:52.500
Flow files in NAFA can only contain text data.

01:40:53.240 --> 01:40:54.420
Richard, I had to step out.

01:40:54.600 --> 01:40:54.980
No, I'm kidding.

01:40:55.620 --> 01:40:56.080
That is false.

01:40:56.460 --> 01:40:57.240
That is false.

01:40:57.240 --> 01:41:03.240
I can actually get everybody's voice on this one.

01:41:04.060 --> 01:41:08.380
I can put names to voices now, so it's going to be hard to hide.

01:41:10.380 --> 01:41:11.460
Let's see.

01:41:12.360 --> 01:41:15.920
Ekta, last question for you.

01:41:16.460 --> 01:41:22.360
In NAFA, every processor must be connected to another processor.

01:41:23.160 --> 01:41:24.080
True or false?

01:41:27.300 --> 01:41:27.900
False.

01:41:29.560 --> 01:41:31.500
It can terminate on its own, right?

01:41:31.700 --> 01:41:32.520
It can.

01:41:32.620 --> 01:41:33.620
If you count it.

01:41:34.660 --> 01:41:35.260
Nice.

01:41:35.420 --> 01:41:40.900
That's a tricky one because most people will be like, no, it has to go to another processor.

01:41:41.440 --> 01:41:47.280
No, you can have a single processor doing something and then terminate.

01:41:49.300 --> 01:41:50.780
So you got it.

01:41:50.800 --> 01:41:51.680
You got it.

01:41:51.800 --> 01:41:52.280
Okay.

01:41:52.580 --> 01:41:53.440
Let's see.

01:41:53.440 --> 01:41:54.780
Let me ask you this.

01:41:55.040 --> 01:41:57.340
How often is that actually done though?

01:41:58.400 --> 01:42:03.400
Oh, it is extremely rare, right?

01:42:04.800 --> 01:42:05.920
I would think so, yeah.

01:42:06.180 --> 01:42:14.740
I mean, if I wanted to, I guess I could use a Git file.

01:42:15.120 --> 01:42:18.580
If I could terminate a Git file within itself,

01:42:18.580 --> 01:42:26.320
I could use that to basically create a provenance event on all the files in a directory.

01:42:27.620 --> 01:42:29.800
And that's it, right?

01:42:30.040 --> 01:42:33.580
Because it's going to pick that file up and then it's just going to terminate.

01:42:34.540 --> 01:42:38.920
So because of that pickup, I'm going to see that provenance event.

01:42:39.440 --> 01:42:41.940
So that's about the only reason I can think of.

01:42:42.460 --> 01:42:45.140
Now, yeah, that's the only reason I can think of.

01:42:45.140 --> 01:42:51.360
But it rarely happens, but you can have a single processor flow.

01:42:56.860 --> 01:42:58.480
Let's see here.

01:43:02.180 --> 01:43:07.200
What is, let's go with Leroy.

01:43:07.740 --> 01:43:10.100
What is the purpose of registry?

01:43:10.100 --> 01:43:14.560
It's like the version control and kind of also permissions on there as well, right?

01:43:14.860 --> 01:43:15.300
Yeah.

01:43:15.460 --> 01:43:15.780
Yeah.

01:43:16.200 --> 01:43:20.520
It is the versioning control for your flow files,

01:43:20.660 --> 01:43:26.180
but it's backed by a real versioning control system.

01:43:26.200 --> 01:43:29.900
I say real, like GitHub, GitLab, you know, those types of things.

01:43:31.140 --> 01:43:33.640
So no, you got it.

01:43:34.680 --> 01:43:37.280
Tom, because this one may come up for you.

01:43:37.280 --> 01:43:38.780
What is Minify?

01:43:40.420 --> 01:43:41.520
Cover that a little bit.

01:43:41.960 --> 01:43:43.960
It's a mini-me of mine.

01:43:45.020 --> 01:43:46.180
It's a mini-me.

01:43:49.960 --> 01:43:54.040
It's a Java application you can use.

01:43:57.100 --> 01:44:00.580
Man, I think I came in right when you were talking about it.

01:44:01.260 --> 01:44:04.080
You went over that right after the break, didn't you?

01:44:04.160 --> 01:44:04.600
Yeah, I did.

01:44:05.940 --> 01:44:10.180
I came in like right in the middle of that because I had stepped away as well.

01:44:10.500 --> 01:44:12.620
So do you have an easier one?

01:44:13.780 --> 01:44:16.140
Well, what I'll do is I'll just tell you the answer.

01:44:16.760 --> 01:44:20.880
So Minify comes in two flavors, Java and C++.

01:44:21.700 --> 01:44:26.020
The Java version is basically NaPy without the UI.

01:44:27.180 --> 01:44:30.040
So and underneath it, it's the same engine.

01:44:30.880 --> 01:44:32.720
It's exactly the same engine.

01:44:32.720 --> 01:44:34.660
And that's how Minify was used.

01:44:35.360 --> 01:44:42.060
And so, you know, back in the day, you know, for edge cases like internet of things,

01:44:42.280 --> 01:44:46.720
internet of battle things, you know, those types of stuff, you know,

01:44:47.380 --> 01:44:51.840
we would use NaPy but we would never, we would just take away the UI

01:44:51.840 --> 01:44:54.600
and have it run the flow over and over.

01:44:54.840 --> 01:44:56.960
And so that's how Minify was born.

01:44:56.960 --> 01:45:03.160
And Minify is basically a stripped down NaPy instance.

01:45:03.440 --> 01:45:08.260
It's smaller, more agile, leaner, easier to run on smaller devices,

01:45:08.540 --> 01:45:10.060
but it doesn't have a UI.

01:45:10.480 --> 01:45:11.720
It's all command line.

01:45:11.940 --> 01:45:17.780
And you would use NaPy and registry to develop the flow that goes to Minify.

01:45:18.160 --> 01:45:22.400
Minify can also, the Java version can use most processors that NaPy can,

01:45:22.400 --> 01:45:26.940
but the C++ version, which is even smaller and faster,

01:45:27.340 --> 01:45:30.140
has about 20 different processors with it.

01:45:30.660 --> 01:45:32.980
So that is Minify.

01:45:37.980 --> 01:45:40.040
Well, I mean, I went over it pretty quickly.

01:45:40.140 --> 01:45:41.140
And I'll only bring it up.

01:45:43.280 --> 01:45:47.080
I'll only bring it up because the other class was heavily interested

01:45:47.080 --> 01:45:52.120
and I don't know what everyone's here relationship is with each other

01:45:52.120 --> 01:45:54.080
as well as the other class.

01:45:55.940 --> 01:45:59.600
So I'll just bring it up just in case it's brought up in a meeting

01:45:59.600 --> 01:46:02.040
and you're like, oh, I know what Minify is.

01:46:02.440 --> 01:46:05.140
And it's really cool that you all are using it.

01:46:05.880 --> 01:46:07.260
So, okay.

01:46:08.680 --> 01:46:11.220
So, you know, I think I went around the room enough.

01:46:11.220 --> 01:46:17.420
I think everyone got, you know, all the concepts and terminology

01:46:17.420 --> 01:46:18.880
and those types of things.

01:46:19.240 --> 01:46:22.960
We covered a ton over the last three days.

01:46:23.520 --> 01:46:30.340
I do appreciate all the, you know, all the activity and the questions

01:46:30.340 --> 01:46:32.500
and the answers and the participation.

01:46:33.840 --> 01:46:36.820
You made it a little less boring than some of the classes.

01:46:37.680 --> 01:46:40.560
You know, I don't like to talk that much.

01:46:41.020 --> 01:46:43.560
So, you know, asking a lot of questions helps a lot.

01:46:44.060 --> 01:46:46.100
But I do appreciate it.

01:46:46.100 --> 01:46:48.680
If you can get those surveys complete,

01:46:49.700 --> 01:46:53.640
I will work on getting these slides updated

01:46:53.640 --> 01:46:57.840
and pushed out to everyone you have.

01:46:58.160 --> 01:47:00.820
If you don't, here is my contact information.

01:47:01.620 --> 01:47:03.020
Feel free to write it down.

01:47:03.020 --> 01:47:07.080
I would post it in Teams chat, but I can't because I'm not,

01:47:07.080 --> 01:47:08.900
I don't have permission to use chat.

01:47:10.580 --> 01:47:13.360
You know, so that's my contact info.

01:47:13.440 --> 01:47:16.280
If you have any questions, feel free to reach out.

01:47:16.300 --> 01:47:18.360
Like I said, I'll be happy to help.

01:47:18.840 --> 01:47:20.640
Send me an email with your question

01:47:20.640 --> 01:47:23.480
and I'll answer it as soon as I possibly can.

01:47:24.380 --> 01:47:29.400
But if anybody had any closing questions that I can answer,

01:47:29.580 --> 01:47:30.040
no, for now.

01:47:30.040 --> 01:47:32.800
Yes, you said, did you say you had a sample flow

01:47:32.800 --> 01:47:35.140
that we could import for this new scenario too?

01:47:36.520 --> 01:47:40.340
For the new scenario, I do not have a flow for it,

01:47:40.340 --> 01:47:42.560
but I do have a flow for the others.

01:47:43.520 --> 01:47:46.660
However, I will quickly put a flow together

01:47:46.660 --> 01:47:47.840
so you can implement it.

01:47:47.840 --> 01:47:48.340
That's easy.

01:47:48.940 --> 01:47:51.940
The scenario is not that bad, so I can...

01:47:51.940 --> 01:47:53.100
No, it didn't look too bad.

01:47:53.740 --> 01:47:56.800
It looks like we could even take pieces of stuff we've already done.

01:47:57.640 --> 01:47:58.120
Exactly.

01:47:58.120 --> 01:48:03.160
I try to make it where you can reuse a lot of components.

01:48:03.240 --> 01:48:04.360
Okay, good question.

01:48:04.600 --> 01:48:08.540
And I'll send that out, a flow for that.

01:48:10.140 --> 01:48:12.800
The scenario also says to...

01:48:12.800 --> 01:48:14.920
Let me pull it up here.

01:48:17.000 --> 01:48:20.140
You've got to get the files from separate directories.

01:48:21.080 --> 01:48:25.740
So are we supposed to put those files in sound directory?

01:48:25.740 --> 01:48:30.780
Yeah, so if you can, just try to put them in separate directories.

01:48:32.300 --> 01:48:38.920
The goal here, we were able to get all files from a directory.

01:48:39.300 --> 01:48:42.260
We were able to get all files from a directory

01:48:42.260 --> 01:48:45.320
and sort them by file type.

01:48:45.840 --> 01:48:50.260
Now, let's see if we get files from three directories, right,

01:48:50.600 --> 01:48:52.220
instead of just one.

01:48:52.980 --> 01:48:56.320
Because it kind of exercises that thought process

01:48:56.320 --> 01:48:59.340
of how am I going to get all of these files

01:48:59.340 --> 01:49:02.900
in the least amount of processors needed.

01:49:04.780 --> 01:49:06.660
But yeah, bustles up, please.

01:49:07.260 --> 01:49:09.560
That was going to be my next question.

01:49:10.840 --> 01:49:15.060
I suppose, and I suppose you're leaving that up to us to figure out,

01:49:15.320 --> 01:49:19.940
but I suppose you could get all three from separate directories

01:49:19.940 --> 01:49:22.140
with one processor, question mark?

01:49:24.840 --> 01:49:31.420
Well, if they are recursive, absolutely, right?

01:49:31.940 --> 01:49:35.140
So if you were listening to the parent folder

01:49:35.940 --> 01:49:39.200
and it was scanning the children

01:49:39.940 --> 01:49:43.320
and you had three different folders, absolutely.

01:49:45.200 --> 01:49:50.500
There's also, I think, some other ways to do this

01:49:50.500 --> 01:49:54.780
where you could do potentially like a list,

01:49:56.020 --> 01:50:00.220
do a directory listing, because there is a processor for a list,

01:50:00.480 --> 01:50:03.920
and then you can pick and choose which directory you want to pull from.

01:50:04.620 --> 01:50:08.240
So there's an easy way, there's a little bit more difficult way,

01:50:08.240 --> 01:50:09.960
and then you can write a script or something else

01:50:09.960 --> 01:50:10.780
and make it even harder.

01:50:10.780 --> 01:50:13.360
So it's up to you.

01:50:13.900 --> 01:50:16.540
All right, any other questions?

01:50:16.720 --> 01:50:17.240
Okay.

01:50:18.200 --> 01:50:19.860
Well, if there's no other questions,

01:50:20.060 --> 01:50:22.700
I'll give you a little bit of your time back early.

01:50:23.560 --> 01:50:25.020
I know we went over yesterday.

01:50:25.800 --> 01:50:27.580
Feel free to reach out.

01:50:27.780 --> 01:50:30.620
You've got my email, you've got my phone number.

01:50:31.020 --> 01:50:34.560
I will update these slides and send them out to you.

01:50:34.560 --> 01:50:37.420
I have everyone's email, so I'll just send them out to everyone.

01:50:38.420 --> 01:50:40.620
And please do your surveys.

01:50:40.740 --> 01:50:44.820
And if that's it, have a wonderful holiday weekend.

01:50:45.600 --> 01:50:47.180
And if you need anything, let me know.

01:50:48.820 --> 01:50:49.380
Thanks, guys.

01:50:49.780 --> 01:50:50.420
Thank you.

01:50:53.300 --> 01:50:53.960
Thank you.

01:50:54.140 --> 01:50:55.420
Uh-huh.

01:50:58.460 --> 01:50:59.480
Fucking dump!

01:51:00.140 --> 01:51:00.880
I'm done!

01:51:07.660 --> 01:51:08.120
Yay!

01:51:28.360 --> 01:51:29.760
I'm going to go to the mall.

01:51:30.760 --> 01:51:35.860
So last month, we stopped and went home on the car

01:51:35.860 --> 01:51:38.080
and we went to the satisfaction.

01:51:39.880 --> 01:51:42.200
So family was happy.

01:52:53.940 --> 01:52:55.340
Okay.

01:53:01.060 --> 01:53:01.760
Okay.

01:53:38.500 --> 01:53:51.520
Oh, my God.

01:54:12.940 --> 01:54:14.340
Okay.

01:54:29.760 --> 01:54:30.540
Okay.

01:55:16.900 --> 01:55:18.300
Okay.

01:55:46.700 --> 01:55:48.100
Okay.