Hadoop搭建
Java命令
- 查看当前java版本
java -version
- 安装默认java jdk
sudo apt-get install default-jdk
- 查询java安装路径
update-alternatives --display java
我的java路径为/usr/lib/jvm/java-11-openjdk-amd64 - 查看java当前运行的进程
jps
安装ssh, rsync
-
sudo apt-get install ssh
-
sudo apt-get install rsync
-
产生ssh key
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
-
将产生的key放到许可证文件中
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
下载hadoop 2.6.4版本
https://archive.apache.org/dist/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz
- 解压Hadoop
sudo tar -zxvf hadoop-2.6.4.tar.gz
- 将其移动到/usr/local/hadoop
sudo mv hadoop-2.6.4 /usr/local/hadoop
设置Hadoop环境变量
sudo vim ~/.bashrc
把下面写进去
export JAVA_HOME=你的JAVA路径
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
让以上的环境变量生效
source ~/.bashrc
设置 Hadoop配置
- 设置Hadoop配置文件
sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
- 修改
export JAVA_HOME=你的JAVA路径
- 修改
- 修改core-sit.xml, 设置HDFS默认名称
sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml
- 在
<configuration></<configuration>
里添加
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hadoop-hduser</value>
</property>
- 设置YARN-site.xml, 含有MapReduce2(YARN)相关的配置
sudo vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
- 在
<configuration></<configuration>
里添加
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
- 设置mapred-site.xml, 用于设置监控Map与Reduce程序的JobTracker任务分配情况以及TaskTracker任务运行的情况, Hadoop提供了设置的模板文件
sudo cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
sudo vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
- 在
<configuration></<configuration>
里添加
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 设置hdfs-site.xml, 用于设置HDFS分布式文件系统
sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
- 在
<configuration></<configuration>
里添加
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
默认的blocks副本备份数量是每一个文件在其他node的备份数量, 默认值为3
创建并格式化HDFS目录
- 创建namenode数据存储目录
sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
- 创建datanode数据存储目录
sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
- 将Hadoop目录的所有者更改为hduser
sudo chown hduser:hduser -R /usr/local/hadoop/
格式化HDFS
hadoop namenode -format
启动Hadoop
- 启动HDFS
start-dfs.sh
- 启动Hadoop MapReduce框架Yarn
start-yarn.sh
- 同时启动(可以跳过1,2)
start-all.sh
Hadoop集群
设置data1服务器
- 编辑interfaces网络配置文件
sudo vim /etc/network/interfaces
- 我们必须设置data1虚拟主机每次开机都是使用固定IP:192.168.56.101
- 设置网卡1
- 设置为’NAT网卡’, 可以通过Host主机连接至外部网络(internet), 设置为eth0, 并设置dhcp自动获取ip地址
- 设置网卡2
- 设置为’仅主机(Host-Only)适配器’, 用于建立内部网络, 内部网络连接虚拟主机(master, data1, data2, data3)与Host主机. 设置为eth1, 并设置为static, 即指定固定ip
# 网卡1
# NAT interface
auto eth0 # eth0是教程里的网卡名, 实际上填写自己的网卡名
iface eth0 inet dhcp
# 网卡2
# host only interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
- 设置hostname
sudo vim /etc/hostname
- 设置为
data1
- 编辑hosts文件
sudo vim /etc/hosts
192.168.56.100 master
192.168.56.101 data1
192.168.56.102 data2
192.168.56.103 data3
- 编辑core-stie.xml
- 修改HDFS默认名称(master)
sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
- 编辑YARN-site.xml
sudo vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8050</value>
</property>
- 编辑mapred-site.xml
sudo vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>
</property>
- 修改hdfs-site.xml
sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
设置data2服务器
第一步, sudo vim /etc/network/interfaces
变成192.168.56.102
第二步, sudo vim /etc/hostname
更改为data2
设置data3服务器
第一步, 变成192.168.56.103
第二步, 更改为data3
设置master服务器
第一步, 变成192.168.56.100
第二步, 更改为master
第七步, sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
只改动下面那个
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
- 编辑master文件
sudo vim /usr/local/hadoop/etc/hadoop/masters
- 更改为
master
- 更改为
- 编辑slaves文件
sudo vim /usr/local/hadoop/etc/hadoop/slaves
data1
data2
data3
创建data1, data2, data3的HDFS目录
- 删除HDFS所有目录
sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
- 创建DataNode存储目录
mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
- 将目录的所有者改为hduser
sudo chown -R hduser:hduser /usr/local/hadoop
创建并格式化NameNode HDFS
- 删除之前的HDFS目录
sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
- 创建NameNode目录
mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
- 将目录的所有者更改为hduser
sudo chown -R hduser:hduser /usr/local/hadoop
- 格式化NameNode HDFS目录
hadoop namenode -format
- 启动Hadoop集群
start-dfs.sh
start-YARN.sh
- 或
start-all.sh
- 关闭hadoop集群
stop-all.sh
Hadoop HDFS命令
命令 | 说明 |
---|---|
hadoop fs -mkdir -p HDFS路径 创建多级HDFS目录 | |
hadoop fs -ls -R HDFS路径 | 一次查看所有HDFS目录 |
hadoop fs -copyFromLocal 本地 HDFS路径 | 复制本地文件到HDFS |
hadoop fs -put 本地 HDFS路径 | 强制覆盖本地文件到HDFS(忽略已存在文件, 并且可以接受stdin, 比如管道输出) |
hadoop fs -cat HDFS路径 | 列出HDFS目录下的文件内容 |
hadoop fs -copyToLocal HDFS路径 本地路径 | 从HDFS上拷贝文件到本地路径 |
hadoop fs -get HDFS路径 本地路径 | 从HDFS上拷贝文件强制到本地路径(忽略已存在路径) |
hadoop fs -cp HDFS路径 HDFS路径 | 复制HDFS文件 |
hadoop fs -rm -R HDFS路径 | 删除HDFS文件 |