Hadoop的安装与配置
几个知识点:
HDFS:底层,存储
HBase :NOSQL列数据库
Map Reduce:编程模型,用于并行计算
ZooKeeper:分布式应用程序协调服务
Avro:数据序列化系统,设计用于支持大批数据交换的应用
Pig:大数据分析工具
Hive:数据仓库,依赖传统关系型数据库(行存储)
Sqoop:数据导入导出模式
**怕装坏了,可以先在虚拟机拍摄快照**
- Xftp连接虚拟机centos01,将Hadoop压缩包放入根目录下/opt/softwares,
- 用Xshell连接三台虚拟机
- 用SSH(Secure Shell)
2.1检查电脑是否安装SSH
ssh -V
若没有就搜索教程安装一个
在Xshell中,查看—撰写—撰写栏-在下侧弹出的框中选择:发送文本到Xshell文本全部对话。
4. 配置ssh免秘钥登录
4.1生成密钥文件,并将秘钥加入到授权文件中。
1)创建,ssh将秘钥保存到此
在根目录下,#ls -a查看文件,因为ls会隐藏一部分文件
三台虚拟机一起:(执行完命令后打开每一个窗口看一下,防止出现其他问题)
mkdir .ssh
cd .ssh
ls
ssh-keygen -t rsa 生成秘钥文件
2)将公钥加入授权文件中,一个个来
cat ./id_rsa.pub >> ./authorized_keys
3)将centos02,centos03的秘钥文件远程拷贝到centos01,并将两者的秘钥文件重新命名为id_rsa.pub.centos02和id_rsa.pub.centos03.
在centos02中:
scp ~/.ssh/id_rsa.pub root@centos01:~/.ssh/id_rsa.pub.centos02
在centos03中:
scp ~/.ssh/id_rsa.pub root@centos01:~/.ssh/id_rsa.pub.centos03
4)在centos01中,将centos02和centos03节点的秘钥文件信息都加入到授权文件中。
cat ./id_rsa.pub.centos02 >> ./authorized_keys
cat ./id_rsa.pub.centos03 >> ./authorized_keys
进入authorized_keys查看
vi authorized_keys
可以看到01 02 03即成功
5)拷贝授权文件到各个节点:
在centos01中:
scp ~/.ssh/authorized_keys root@centos02:~/.ssh/
scp ~/.ssh/authorized_keys root@centos03:~/.ssh/
5. 验证三台机器的免秘钥登录配置成功
ssh centos02
三台虚拟机之间互相登录
exit # 退出
第一次连接可能会出现图片中的提示,输入yes回车即可
6-9都在centos01上操作
- 将开始上传的Hadoop解压至/opt/modules
cd /opt/spftwares
ls
tar -zxf hadoop-2.8.2.tar.gz -C /opt/modules/
Hadoop版本根据自己的调整
像这种带着版本号的,不太好输入,可以先输入几个字母,再用TAB键补齐
需要注意一点就是解压到/opt/modules/下,最后的/不要漏
- 配置hadoop环境变量
修改以下文件,在其中加入JAVA_HOME环境变量
手动输入Java环境变量比较麻烦,可以在与centos01连接的对话框上右键—复制此连接(大概这个意思,忘记原字),就会打开第二个和centos01的框,此时cd进入/opt/modules/jdk1.8.0_144/再输入pwd(路径)即复制就可
vi Hadoop-env.sh
vi mapred-env.sh
vi yarn_env.sh
再文档中快速查找JAVA_HOME,输入/JAVA回车即可
以下截图为修改完毕的三个文件
进入文件点击i进入输入模式,写完之后点击ESC,再输入:wq回车即可。
-
配置HDFS
配置文件很重要,要注意小符号,建议复制粘贴
(1)修改配置文件core-site.xml,加入以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://centos01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/modules/hadoop-2.8.2/tmp</value>
</property>
</configuration>
参数解析:
fs.defaultFS:HDFS的默认访问路径。
hadoop.tmp.dir:Hadoop临时文件的存放目录,可自定义。
(2)修改配置文件hdfs-site.xml,加入以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property><!--不检查用户权限-->
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/modules/hadoop-2.8.2/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/modules/hadoop-2.8.2/tmp/dfs/data</value>
</property>
</configuration>
参数解析:
dfs.replication:文件在HDFS系统中的副本数。
dfs.namenode.name.dir:HDFS名称节点数据在本地文件系统的存放位置。
dfs.datanode.data.dir:HDFS数据节点数据在本地文件系统的存放位置。
(3)修改slaves文件,配置DataNode节点。slaves文件原本无任何内容,需要将所有DataNode节点的主机名都添加进去,每个主机名占一整行。本例中,DataNode为三个节点:
centos01
centos02
centos03
- 配置YARN
(1)有将mapred-site.xml.template文件重命名为mapred-site.xml,风险较大,可以改为复制一份mapred-site.xml.template,再复制文件上进行操作。复制文件命名为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
(1)修改mapred-site.xml文件,添加以下内容,指定以yarn集群方式运行。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(2)修改yarn-site.xml文件,添加以下内容:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
参数解析:
yarn.nodemanager.aux-services :NodeManager上运行的附属服务。需配置成mapreduce_shuffle才可运行MapReduce程序。
- 拷贝Hadoop安装文件到其他主机
再centos01中:
cd /opt/modules
scp -r hadoop-2.8.2/ root@centos02:/opt/modules/
scp -r hadoop-2.8.2/ root@centos03:/opt/modules/
查看是否拷贝成功
在centos02和centos03中分别:进入/opt/modules/查看
有hadoop-2.8.2就成功了:)
- 配置Hadoop的环境变量
在01 02 03 三台虚拟机都需要配置,修改/etc/profile文件,添加以下内容。先退到根目录下,再修改。
export HADOOP_HOME=/opt/modules/hadoop-2.8.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
别忘记重启文件使其生效:
source /etc/profile
12.启动Hadoop
格式化NameNode可以初始化HDFS文件系统的一些目录和文件。
hadoop namenode -format
格式化只需要在第一次启动Hadoop的时候用,(这个对我来说,是比较大的一个坑,之前搭建Hadoop集群的时候,那位老师就一直让格式化☹选择一位良师还是很有必要的:))
出现这个就成功了
启动:
start-all.sh
也可以执行start-dfs.sh和start-yarn.sh分别启动HDFS和YARN集群。
13.查看各节点启动进程
三台虚拟机上输入
jps
Jps进程多一个少一个没关系,其他不能多一个或者少一个,但是集群启动时间长了之后再去jps,可能有些就没有了,大部分是因为你没有用到那个节点,它就歇着去了。
14.网页也可登录
Centos01 的IP地址在加上:50070就是网址
如:192.168.170.133:50070
在Overview里看到’centos01:9000’active就可以啦
14.1)做一个小测试:
在centos01节点的HDFS根目录创建文件夹,名为input,并在/opt/data目录下的一个创建一个命名为123.txt文件(文件中输入两行话:第一行:Hello, Hadoop!,第二行:My name is pinyin)上传到新建的input文件夹中
cd /opt/data
ls
vi 123
hdfa dfs -mkdir /input
hdfs dfs put /opt/data/123 /input
在网页中查看HDFS的NameNode信息。选择绿色条目栏的最后一个Utitles
点击input,进入即可看见你命名为123的文件,再次点击进入
可以选择download,将文件下载下来,以文本文档的形式打开
(有的可以直接点开查看)
成功!
15.测试MapReduce
运行Hadoop自带的Map reduce单词计数程序,统计/input文件中所有文件的单词数量:
进入 /opt/modules/hadoop-2.8.2/share/Hadoop/mapreduce
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar workcount /input /output
统计完成后,查看执行结果:
hadf dfs -cat /output/*
网页中也可以查看:
同样,也可以下载下来看看。
到这里,就把Hadoop平台搭建起来,配置完成:)