Hadoop环境搭建(一)(单机伪分布式)
-
生成ssh秘钥(免密登陆)
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost ssh-keygen -t rsa # 会有提示,都按回车就可以 cat ./id_rsa.pub >> ./authorized_keys # 加入授权 # 公钥私钥放入三个服务器的/root/.ssh文件夹执行 cat ./id_rsa.pub >> ./authorized_keys -
服务器配置
hostname ip hadoop1 192.168.2.103 hadoop2 192.168.2.108 hadoop3 192.168.2.109 -
配置每个节点的hosts文件
vi /etc/host 192.168.2.104 hadoop1 192.168.2.108 hadoop2 192.168.2.109 hadoop3 -
拉取安装包解压并且找到执行文件查看版本(提前配置jdk)
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz cd hadoop-3.1.3/bin ./hadoop version -
伪分布式部署:
-
Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
-
现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar可以看到所有例子),包括 wordcount、terasort、join、grep 等。 -
在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。
cd /root/hadoop mkdir ./input cp ./etc/hadoop/*.xml ./input # 将配置文件作为输入文件 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+' cat ./output/* # 查看运行结果
-
-
伪分布式部署:
- Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
- Hadoop 的配置文件位于 ${HADOOP_HOME}/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
- 修改配置文件 core-site.xml (通过 vim编辑会比较方便:
vim ./etc/hadoop/core-site.xml),将当中的
<configuration> <property> <name>hadoop.tmp.dir</name> <! -- 临时文件地址 --> <value>file:${HADOOP_HOME}/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> 同样的,修改配置文件 hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration> -
配置好后执行 NameNode 的格式化:
cd ${HADOOP_HOME} ./bin/hdfs namenode -format -
增加环境变量使root启动
# 启动报错 ERROR: Attempting to operate on hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. Starting datanodes ERROR: Attempting to operate on hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation. Starting secondary namenodes [hadoop1] ERROR: Attempting to operate on hdfs secondarynamenode as root ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation. #/etc/profile 中添加变量 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_JOURNALNODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root -
配置hadoop中的JAVA_HOME
#报错 hadoop1: ERROR: JAVA_HOME is not set and could not be found. #修改文件 vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh export JAVA_HOME=xxx -
启动
sh {HADOOP_HOM}/sbin/start-dfs.sh #jps出现以下进程代表启动成功 3153 DataNode 3364 SecondaryNameNode 2983 NameNode sh {HADOOP_HOME}/sbin/start-yarn.sh sh {HADOOP_HOME}/sbin/mr-jobhistory-daemon.sh start historyserver -
关闭
sh {HADOOP_HOME}/sbin/start-dfs.sh sh {HADOOP_HOME}/sbin/start-yarn.sh sh {HADOOP_HOME}/sbin/mr-jobhistory-daemon.sh start historyserver

浙公网安备 33010602011771号