一、大数据的四个v特征
-
volume 体量大
-
variety 样式多
-
velocity 速度快
-
valueless 价值密度低
二、Hadoop四个模块
-
common
-
hdfs:包括的进程nameNode+dataNode+secondaryNameNode
-
hadoop yarn:包括的进程resourceManager+nodeManager
-
hadoop mapreduce(mr)
三、安装hadoop
-
安装hadoop需要安装jdk
-
下载hadoop-3.1.1.tar.gz
-
解压 tar -xzvf hadoop-3.1.1.tar.gz
-
将解压出来的文件移动到/usr/loacl下 mv ~/downloads/hadopp-3.1.1 /usr/local/
-
创建符号链接 ln -s /usr/local/hadopp-3.1.1 /usr/local/hadoop
-
配置hadoop环境变量 ,在profile文件最下面添加
-
vim /etc/profile
-
export HADOOP_HOME=/usr/local/hadoop
-
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
-
-
使环境变量生效 source /etc/profile
-
验证安装是否正确hadoop version
四、配置hadoop
-
本地模式
-
安装好之后就是本地模式
-
本地模式中hdfs就是本地操作系统的文件系统,不会启动独立的进程
-
使用hdfs dfs -ls / 可以查看文件系统目录
-
适合开发和调试的时候使用
-
-
伪分布模式
-
进入hadoop目录下的/etc/hadoop文件夹
-
编辑core-site.xml文件
-
<?xml version="1.0">
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
-
编辑hdfs-site.xml
<?xml version="1.0">
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
-
编辑mapred-site.xml
-
先复制它的模板文件 cp mapred-site.xml.template mapred-site.xml(有的版本没有这个文件)
-
<?xml version="1.0">
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
-
编辑yarn-site.xml
<?xml version="1.0">
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
-
配置ssh(安全远程连接)
-
查看是否已经安装ssh
-
yum list installed|grep ssh
-
-
检查是否启动了ssh
-
ps -Af|grep sshd
-
-
在ssh的client端生成秘钥 这时~/.ssh/id_rsa文件夹下就会生成两个文件id_rsa(私钥)和id_rsa.pub(公钥)
-
ssk-keygen -t rsa -p '' -f ~/.ssh/id_rsa
-
-
追加公钥到~/.ssh/authorized_keys文件中(文件名位置固定)
-
cd ~/.ssh
-
cat id_rsa.pub>>authorized_keys
-
-
修改authorized_keys为644
-
chmod 644 authorized_keys
-
-
验证是否成功(由于是伪分布式所以直接使 用localho st就可以了)
-
ssh localhost(第一次需要输入密码)
-
-
-
对hdfs进行格式化(相当于初始化)
-
hadoop namenode -format
-
-
启动hadoop所有的进程(进入hadoop下的sbin目录)
-
start-all.sh
-
如果出现Attempting to operate on hdfs namenode as root问题
-
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数
-
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
-
还有,start-yarn.sh,stop-yarn.sh顶部也需添加
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
-
-
如果出现hadoop找不到jdk的情况
-
编写hadoop目录下/etc/hadoop/hadoop_env.sh文件
-
找到export JAVA_HOME=修改成对相应的java路径
-
-
使用jps命令查看下进程
-
查看hdfs文件系统
-
hdfs dfs -ls /
-
-
创建目录
-
hdfs dfs -mkdir -p /user/root/hadoop
-
-
-
完全分布式
-
准备4个虚拟机,分别部署namenode、dataNode1、dataNode2、dataNode3,模拟容灾一个数据将会备份3份,namenode相当于管理员 存放数据目录
-
修改主机名,分别将主机名修改成对应功能
-
vim /etc/hostname
-
-
修改host文件,将主机ip对应上功能
-
vim /etc/host
-
-
重启网络服务
-
service network restart
-
-
生产ssh文件
-
在namenode主机上生成公私秘钥,并添加到授权中
-
ssh-keygen -t rsa -p '' -f ~/.ssh/id_rsa
-
-
将公钥放到datanode1-3的授权中,通过远程拷贝到/home/.ssh/authorized_keys中
-
scp id_rsa.pub 用户名@目标主机名:/home/.ssh/authorized_keys
-
-
-
分别安装java和hadoop
-
配置hadoop
-
编辑core-site.xml文件
-
-
<?xml version="1.0">
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode/</value>
</property>
</configuration>
-
编辑hdfs-site.xml
<?xml version="1.0">
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
-
编辑mapred-site.xml
<?xml version="1.0">
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
-
编辑yarn-site.xml
<?xml version="1.0">
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
-
编辑slaves文件(新版本中叫 workers),清空并将datanode的主机名写入
-
编辑hadoop-env.sh 添加JAVA_HOME
-
分发配置到datanode
-
进入hadoop的目录下
-
scp -r /etc用户名@目标主机名:/hadoop目录/
-
-
清空临时文件,在/tmp文件夹下有个hadoop-用户名开头的文件删除掉(有可能不存在)
-
rm -rf /tmp/hadoop-centos
-
-
删除hadoop日志 ,在hadoop目录下的logs文件夹里
-
在namenode中启动hadoop,datanode自动启动