Hadoop是一个适合海量数据的分布式存储和分布式计算的平台
三大组件
hdfs:
是一个分布式存储框架,适合海量数据存储
mapreduce:
是一个分布式计算框架,适合海量数据计算
yarn:
是一个资源调度平台,负责给计算框架分配计算资源
1 上传 hadoop 安装包并解压至 soft 文件夹
tar -xvf hadoop-2.7.6.tar.gz
2 配置环境变量,退出后重启配置文件
vim /etc/profile
增加hadoop环境变量,将bin和sbin都配置到PATh中
export HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
export PATH=.:$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
3 修改配置文件
hadoop 配置文件在/usr/local/soft/hadoop-2.7.6/etc/hadoop/
3.1 slaves : 从节点列表(datanode)
vim slaves
//删除原对象
//增加node1, node2
3.2 hadoop-env.sh : Hadoop 环境配置文件
vim hadoop-env.sh
//修改JAVA_HOME
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
3.3 core-site.xml : hadoop核心配置文件
vim core-site.xml
//在 configuration 标签中间增加以下内容
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
3.4 hdfs-site.xml : hdfs配置文件
vim hdfs-site.xml
//在configuration中间增加以下内容
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
3.5 yarn-site.xml: yarn配置文件
vim yarn-site.xml
//在configuration中间增加以下内容
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>20480</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
3.6 mapred-site.xml: mapreduce配置文件
//重命名模板文件
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
//在configuration中间增加以下内容
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
4 将 hadoop 安装文件分发到子节点
scp -r /usr/local/soft/hadoop-2.7.6/ node1:/usr/local/soft/
scp -r /usr/local/soft/hadoop-2.7.6/ node2:/usr/local/soft/
5 格式化namenode
hdfs namenode -format
6 启动 hadoop
start-all.sh
7 访问 hdfs 页面验证是否安装成功
http://master:50070
8 关闭 hadoop
stop-all.sh
附:如果安装失败
stop-all.sh
再次重启的时候
1、需要手动将每个节点的tmp目录删除: 所有节点都要删除
rm -rf /usr/local/soft/hadoop-2.7.6/tmp
然后执行将namenode格式化
2、在主节点执行命令:
hdfs namenode -format
3、启动hadoop
start-all.sh
由于 hadoop 是内置于 linux,并且大部分操作指令和 linux 相同
为了区分,需要在指令前加上 hadoop dfs
1、创建目录 mkdir
hadoop dfs -mkdir
//在根目录下创建a b c三个文件夹
hadoop dfs -mkdir /a /b /c
2、递归创建目录
hadoop dfs -mkdir -r
3、查看当前路径
hadoop dfs -ls
4、从当前 linux 中上传文件 put 至 hadoop hdfs 数据库
hadoop dfs -put linux中的文件 hadoop中的路径
hadoop dfs -put students.txt /data/student
5、从 hadoop hdfs 数据库下载文件至当前 linux 路径
hadoop dfs hadoop中的文件
hadoop dfs -get /data/student/students.txt
6、复制
hadoop dfs -cp /data/a.txt /data/b/
7、查看文件内容(cat), 如果数据量比较大,不能使用
hadoop dfs -cat /data/student/students.txt
8、移动 (mv),物理层面文件没有移动,只是改变了元数据(目录结构)
hadoop dfs -mv /a.txt /a
9、删除文件(rm)目录(rmr)
hadoop dfs -rm /a/a.txt
hadoop dfs -rmr /a
并没有真正删除文件,只是将文件放到了回收站中,
/user/root/.Trash/Current ; 每一个用户都有一个回收站,会定期清空
fs.trash.interval
1440 //此行即是时间
手动删除回收站
Hadoop dfs -rmr /user/root/.Trash/Current
10、强制删除,不经过回收站
hadoop dfs -rmr -skipTrash /a
11、查看文件末尾(tail)
hadoop dfs -tail /data/student/students.txt
-f : 一直等待查看
12、查看文件的大小
hadoop dfs -du -h /data
hadoop dfsadmin -safemode get 命令是用来查看当前 hadoop 安全模式的开关状态
hadoop dfsadmin -safemode enter 命令是打开安全模式
hadoop dfsadmin -safemode leave 命令是离开安全模式
单纯修改从节点数据存储位置中的数据,是无法影响到主节点中获得的数据的
主节点存储的信息会详细到行!?